为什么使用 Typescript - Angular2 进行类型定义 (.d.ts)?

Why type definition (.d.ts) with Typescript - Angular2?

我已经看过其他SO问题了。但还是对我的问题感到困惑。

我见过很多直接在 angular2 app 中使用 Jquery(js)Toastr(js) toastr without typings 和其他 JS 库而不使用它们的类型定义的示例 (.d.ts) 个文件,它们工作正常。

所以,

1) 基本上什么是增益或损失,类型定义文件是什么?

2) Angular2 文件也是 javascript 文件。那么他们的类型定义文件呢 ?

注意:我还没有尝试过 NPM 所以我不知道当你实际安装 Angualr2 package 时,它是否添加了所有相关的 t.ds 文件在 typings 文件夹中。

Typescript 定义文件包含用 Javascript 编写的代码的类型信息。

Javascript 本身不包含类型信息,因此 Typescript 无法神奇地检索该信息。为了解决这个问题,创建了定义文件,告诉 Typescript 在什么地方使用了哪些类型。

因此,您可以在没有定义文件的情况下使用第 3 方库,但您将失去 Typescript 提供的类型安全性。

例如,如果您包含 jQuery 定义文件,那么您的 IDE 现在可以为 jQuery API 提供 intellisense/auto-suggestions。当您尝试将布尔值传递给需要字符串的函数时,Typescript 编译器也会给您警告。

因此 Typescript 不需要定义文件就可以工作,但是如果没有它们,您将失去 Typescript 提供的很多好处。