网站搜索

在 WebStorm 上理解 Typescript 定义文件


我今天开始在 Webstorm 中使用 Typescript,我对正在发生的事情感到非常困惑。想象一个项目使用 tsd 在 typings/ 加载定义类型。作为背景,angular 定义了一个别名为 ng 的 angular 模块,然后还有其他 d.ts 文件向 angular(技术上也包括 ng)添加更多模块。

当我例如需要 router 时,我得到:

事实上,如果你打开 angular-route.d.ts(来自 DefinitelyTyped),你也可以看到同样的内容:

d.ts 文件在技术上是正确的,因为 tsc 编译它们时会提供这些定义文件。

另一方面,Webstorm 允许你加载库(来自 DefinitelyTyped 的 TypeScript 存根)。如果我去那里并下载 angular 的那些(与我在 typings/ 中拥有的完全相同),我得到的是:

相同的错误,但至少我在解决方案资源管理器中没有看到红色波浪线。不过,当我输入 ng.route.<ctrl+space> 时,它仍然不会给我任何智能感知,它只是当我写完后变成蓝色(实际上,我可以按 cmd+点击并跳转到定义)。

谁在这里失败?是 TypeScript 插件吗?很奇怪它在使用 typings/ 时失败,却 somehow 在 Webstorm 的库菜单中(使用同一个文件)工作。

答案#1

这里谁出错了?是 TypeScript 插件吗?

是的。目前您需要使用 Webstorm 测试版渠道才能获得对 TypeScript 1.4 联合类型的支持。