【问题标题】:Why do pure Typescript projects include .d.ts definitions?为什么纯 Typescript 项目包含 .d.ts 定义?
【发布时间】:2023-03-17 20:20:02
【问题描述】:

为什么 Typescript 项目包含 .d.ts 定义...似乎适得其反?

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

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

问候,

肖恩

【问题讨论】:

  • 一个 ts 源项目的编译(或者你喜欢的编译)具有以下输出 1)一个 js 文件(或多个),它们只是普通的 es5 js 文件 2)一个 .d.ts 定义描述原始项目类型约束的文件(在转译为 js 时丢失)。第二个文件用于在使用已编译的 (js + .d.ts) 项目时进行类型检查和自动完成。

标签: typescript


【解决方案1】:

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

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

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

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

【讨论】:

  • 我现在明白了,C 头文件示例实际上非常好,基本上只是暴露了接口......我也想看看 TypeScript 源代码,而不仅仅是头文件(.d. ts) 但我想这就是 Github 的用途......再次发送,很好的答案!
猜你喜欢
  • 2016-11-12
  • 1970-01-01
  • 2015-09-11
  • 1970-01-01
  • 1970-01-01
  • 2018-09-16
  • 2017-10-07
  • 2017-03-02
  • 1970-01-01
相关资源
最近更新 更多