@types、typescript 和 webpack 有什么关系
how are @types, typescript and webpack related
要在 .ts
文件中使用导出类型,必须添加导入它
import {jQuery} from 'jQuery'
现在,当我使用它时,我无法获得智能感知,我仍然需要 npm install @types\jQuery
才能获得智能感知。
所以如果没有@types,上面的语句只是推断在打字稿捆绑期间包含这个文件。
现在,如果我安装 @types 然后不添加任何其他代码,我就会开始获得智能感知。
所以是不是像上面的说法是双重目的。
在使用 typescript/webpack 捆绑期间,它告诉我们将这些文件作为依赖项捆绑在一起,而在编译期间,它告诉我们要包含 .d.ts 而不是实际的代码文件?
为什么这个问题:我正在尝试将 angular1 移动到打字稿,我可以在 .ts
文件中使用 angular.whatever
即使不导入它?不明白为什么会这样。它应该给我错误要求我导入 angular
不确定我是否 100% 理解您的问题,但我可以尝试解释一下。 javascript 运行时不会有静态检查,它只是在编译期间。如果你告诉 typescript 你的 variable/function/etc。是 'any' 类型那么它就可以让你用它做任何事情。最终生成的代码是一样的,无论是否检查。如果在运行时没有对应的变量,就会报错。键入仅用于 "teach" ts 编译器关于静态编译变量的实际类型。
所以在编译过程中没有.d.ts包含在任何地方,这只是为了静态类型检查。
至于为什么你可以访问angular,我想这是因为d.ts包含了定义并且通过使用@types/angular你让ts编译器知道了它。
勾选here。 .d.ts 文件包含全局变量 angular,这就是我认为无需导入即可使用它的原因。
P.S。不确定 100%,但似乎是这一行:
declare var angular: angular.IAngularStatic;
您可以尝试删除此行,看看是否收到错误:)
要在 .ts
文件中使用导出类型,必须添加导入它
import {jQuery} from 'jQuery'
现在,当我使用它时,我无法获得智能感知,我仍然需要 npm install @types\jQuery
才能获得智能感知。
所以如果没有@types,上面的语句只是推断在打字稿捆绑期间包含这个文件。
现在,如果我安装 @types 然后不添加任何其他代码,我就会开始获得智能感知。
所以是不是像上面的说法是双重目的。
在使用 typescript/webpack 捆绑期间,它告诉我们将这些文件作为依赖项捆绑在一起,而在编译期间,它告诉我们要包含 .d.ts 而不是实际的代码文件?
为什么这个问题:我正在尝试将 angular1 移动到打字稿,我可以在 .ts
文件中使用 angular.whatever
即使不导入它?不明白为什么会这样。它应该给我错误要求我导入 angular
不确定我是否 100% 理解您的问题,但我可以尝试解释一下。 javascript 运行时不会有静态检查,它只是在编译期间。如果你告诉 typescript 你的 variable/function/etc。是 'any' 类型那么它就可以让你用它做任何事情。最终生成的代码是一样的,无论是否检查。如果在运行时没有对应的变量,就会报错。键入仅用于 "teach" ts 编译器关于静态编译变量的实际类型。
所以在编译过程中没有.d.ts包含在任何地方,这只是为了静态类型检查。
至于为什么你可以访问angular,我想这是因为d.ts包含了定义并且通过使用@types/angular你让ts编译器知道了它。
勾选here。 .d.ts 文件包含全局变量 angular,这就是我认为无需导入即可使用它的原因。
P.S。不确定 100%,但似乎是这一行:
declare var angular: angular.IAngularStatic;
您可以尝试删除此行,看看是否收到错误:)