在使用Typescript时,我们需要考虑如何解析类型定义文件(* .d.ts)。
只要我知道,有几个系统用于管理打字稿定义系统,如下所示。
我猜tsd是最古老的,而且是起源。
但是,为什么@types
需要诞生?我猜制作打字的定义文件有点复杂。
实际上{{1}}是什么?
那么,围绕这个问题的最佳解决方案是什么?
答案 0 :(得分:8)
围绕TypeScript的打字管理生态系统背后的故事非常大。
首先,(仍然是)一个名为DefinitelyTyped的整体存储库,它被用作所有想要为不同库提供其输入的开发人员的中心。
由于这个存储库,一个名为tsd
的打字管理器直接从该存储库中获取所有类型并将它们保存在项目中。
同时DT repo超出了它的缩放能力和had to be restructured。讨论更进一步说明d.ts.
文件应该是什么样子,所以有一点需要另一种方法来在项目中包含这些类型。另一个问题是库和TypeScript编译器本身的版本控制。
然后在某一时刻Blake Embrey创建了一个名为typings
的新打字经理,该经理支持DefinitelyTyped
以及构建d.ts
的新方法。新结构允许两种类型的模块 - 全局变量(大多数是DefinitelyTyped模块)和应该封装的模块。
后来TypeScript 2.0 Beta由微软宣布。 TypeScript背后的团队意识到需要以不同的方式处理打字文件。他们所做的是@types
npm范围,they announced will be the new way of handling typings。此时@types
仅适用于TypeScript 2.0。
声明文件(.d.ts文件)是在TypeScript中使用现有JavaScript库的基本部分,但获取它们一直是我们知道存在改进空间的地方。随着我们越来越接近TypeScript 2.0,我们非常高兴能够展示我们计划简化的最高峰。在TypeScript 2.0中获取类型声明除了npm之外不需要任何工具。
所以回答你的问题:
如果您使用低于v2.0的TypeScript,请使用typings
,但如果您使用2.0,请使用@types