@types,打字稿和webpack是如何相关的
要在.ts
文件中使用导出的types,必须添加导入
import {jQuery} from 'jQuery'
现在,当我使用这个我没有得到intellisense,我仍然需要做npm install @types\jQuery
来获得这个。
所以没有@types,上面的语句只是推断在打字稿捆绑包括这个文件。
现在,如果我安装@types,而不添加任何其他代码,我开始获得智能感知。
那么这就像上面的说法是双重目的。
在捆绑使用typescript / webpack,它告诉捆绑这些文件作为依赖和编译期间,它告诉包括.d.ts而不是实际的代码文件?
为什么这个问题:我试图将angular.whatever
移动到打字稿,我可以在.ts
文件中使用angular.whatever
甚至不导入它? 不明白为什么会发生这种情况。 它应该给我错误要求我导入angular
不知道我把你的问题100%,但我可以尝试解释一下。 JavaScript运行时不会有静态检查,只是在编译期间。 如果你告诉打字机你的variables/函数/等。 是“任何”types,那么它只会让你做任何事情。 最终生成的代码是相同的,无论是否检查。 如果在运行时没有相应的variables,将会出现错误。 types被用来“教”ts编译器关于静态编译的实际variablestypes。
所以在编译期间,任何地方都不会包含.d.ts,这只是用于静态types检查。
至于为什么你可以访问angular,我想这是因为d.ts包含定义,并通过使用@ types / angular让ts编译器知道它。
在这里检查。 .d.ts文件包含全局variablesangular,这就是为什么你可以在不导入的情况下使用它。
PS不知道100%,但似乎是这样的:
declare var angular: angular.IAngularStatic;
你可以尝试删除这一行,看看你是否得到你的错误:)