@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; 

你可以尝试删除这一行,看看你是否得到你的错误:)