要在.ts
文件中使用导出类型,必须添加导入
import {jQuery} from 'jQuery'
现在,当我使用这个时,我没有得到intellisense,我仍然需要做npm install @typesjQuery
才能得到它。
所以在没有@types的情况下,上面的语句只是推断在typescript绑定过程中包括这个文件。
现在,如果我安装@types,那么在不添加任何其他代码的情况下,我确实开始获得intellisense。
所以,它就像上面的声明是双重目的。
在使用typescript/webpack进行绑定时,它告诉将这些文件作为依赖项进行绑定,在编译时,它告诉包含.d.ts而不是实际的代码文件?
为什么会出现这个问题:我正试图将angular1移动到typescript,并且我可以在.ts
文件中使用angular.whatever
,即使不导入它?不明白为什么会发生这种事。它应该会给我错误,要求我导入角度
不确定我是否100%理解你的问题,但我可以试着解释一下。javascript运行时不会有静态检查,只是在编译期间。如果您告诉typescript您的变量/函数等。是"any"类型,则它只允许您对其执行任何操作。最终生成的代码是相同的,无论是否检查。如果在运行时没有相应的变量,则会出现错误。类型仅用于向ts编译器"传授"静态编译中变量的实际类型。
因此,在编译过程中,任何地方都不包含.d.ts,这只是用于静态类型检查。
至于为什么你可以访问angular,我想这是因为d.ts包含定义,通过使用@types/angular,你可以让ts编译器知道它。
请在此处查看。.d.ts文件包括全局变量angular,这就是为什么你可以在不导入的情况下使用它。
附言:不确定100%,但似乎是这条线:
declare var angular: angular.IAngularStatic;
你可以尝试删除这一行,看看你是否收到错误:)