Gol*_*den 2 javascript typescript
在 TypeScript 中,为什么有时需要使用declare来声明变量,有时不需要(同样的问题对于函数也是如此,......)?
举个例子:我什么时候(以及为什么)使用
declare var foo: number;
Run Code Online (Sandbox Code Playgroud)
如果
let foo: number;
Run Code Online (Sandbox Code Playgroud)
会做同样的事情(至少在我看来好像它做了同样的事情,即它们都声明了一个名为footype的变量number)。有什么不同?
在 TypeScript 中,“ declare var foo: number;”的意思是:“代码中有一个叫做 foo 的数字。我知道你不会检索到它。但是请相信我,就像你知道它一样。 ”这是一种前向声明,就像你一样在C/C++中可以看到。
例子:
假设您正在使用 jQuery 编写 TS 脚本。您可以在 HTML 页面中的某个位置包含所有这样的 JavaScript:
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="myscript.js"></script> <!-- generated from TypeScript, with something like "tsc myscript.ts" -->
Run Code Online (Sandbox Code Playgroud)
因此,不需要在 TS 脚本中包含 jQuery,因为从 TS 脚本生成的 JS 将了解有关 jQuery 的所有内容。然而,TS 转译器会$()在代码中多次注释 jQuery 的标志性“ ”。您没有在 TS 代码中包含 jQuery(因为没有必要),因此它不知道有关“ $()”的任何信息。$因此,它会向您报告许多错误,询问您代码中随处可见的“”到底是什么。要解决所有这些$相关错误,您将declare var $: jQuery;在 TS 脚本的开头写入“”。通过编写此内容,您可以将以下内容告诉 TS 转译器:
代码中有一个名为“
$”的变量,其类型为“jQuery”。我知道你不会取回它。但假设它存在,请表现得就像import "aTSfile.ts";代码前面有一个“”完美地向您描述了它(就像我使用它一样的描述)。相信我,当脚本执行时, JavaScript 会知道“$”到底是什么。不用担心那个。;-)
| 归档时间: |
|
| 查看次数: |
1236 次 |
| 最近记录: |