为什么纯 Typescript 项目包含 .d.ts 定义?

bor*_*net 2 typescript

为什么打字稿项目包括 .d.ts 定义......似乎适得其反?

如果已经在 TypeScript 中开发了一个库(比如 Angular2),并且 TS 转译器可以使用源 .ts 文件进行智能,为什么我一直在 TS 项目中看到 .d.ts 文件被包含在内?

现在确定您可以通过 tsd 可执行文件轻松生成 .d.ts 定义,但我看不到逻辑。

问候,

肖恩

Ric*_*lay 5

这归结为分配。通过 npm/bower 引用项目提供了一个“主”文件,它是 javascript,而不是打字稿。因此,Typescript 项目的编译输出是最有意义的:

a) 转译后的 javascript 文件,可能缩小了

b) 描述类型注释的 .d.ts 文件(有点像 C 中的头文件)

在打字稿中分发没有多大意义,因为它要么会阻止 javascript 项目使用它,要么需要 npm 包的单独打字稿版本。