对于Typescript,类型定义管理系统(如tsd)的最佳解决方案是什么?

kya*_*bal 7 typescript tsd typescript-typings

在使用Typescript时,我们需要考虑如何解析类型定义文件(*.d.ts).

只要我知道,有几个系统用于管理打字稿定义系统,如下所示.

  • TSD
  • 分型
  • @types

我猜tsd是最古老的,也就是起源.但是,为什么typings需要出生?我猜制作打字的定义文件有点复杂.

什么是@types实际?

那么,围绕这个的最佳解决方案是什么?

dri*_*hev 8

TypeScript的打字管理生态系统背后的故事非常大.

首先,(仍然是)一个名为DefinitelyTyped的monolith存储库,它被用作所有想要为不同库提供其输入的开发人员的中心.

由于这个存储库,一个打字管理器调用tsd它直接从该存储库中获取类型并将它们本地保存在项目中.

同时DT repo超出了它的扩展能力,必须进行重组.讨论更进一步说明了d.ts.文件的外观,所以有一点需要另外一种方法来在项目中包含类型.另一个问题是库和TypeScript编译器本身的版本控制.

然后,布莱克·艾布里(Blake Embrey)创造了一个新的打字经理typings,该经理被称为支持DefinitelyTyped和新提出的构建方式d.ts.新结构允许两种类型的模块 - 全局变量(大多数是DefinitelyTyped模块)和应该封装的模块.

后来的TypeScript 2.0 Beta由微软公布.TypeScript背后的团队意识到需要以不同的方式处理打字文件.他们所做的是一个@typesnpm范围,他们宣布将是处理打字的新方式.此时@types仅适用于TypeScript 2.0.

声明文件(.d.ts文件)是在TypeScript中使用现有JavaScript库的基本部分,但获取它们一直是我们知道存在改进空间的地方.随着我们越来越接近TypeScript 2.0,我们非常高兴能够展示我们计划简化的最高峰.在TypeScript 2.0中获取类型声明除了npm之外不需要任何工具.

所以回答你的问题:

如果使用TypeScript低于v2.0使用typings,但如果使用2.0则使用@types

  • 感谢@drinchev,看起来很准确 - 值得注意的是,Typings是一个练习,用于展示如何使用TypeScript管理依赖关系_(以前使用DefinitelyTyped + TSD是不可能的,作为模块作者,我自己这是不可接受的) .TypeScript现在了解这一点,并致力于将提案纳入2.0核心. (4认同)