关于 TypeScript 中的“\*.d.ts”

新手上路,请多包涵

我对 .d.ts 声明文件很好奇,因为我是 TypeScript 编程语言的新手。有人告诉我 .d.ts 文件类似于 .h C 和 C++ 编程语言中的头文件,但是, .d.ts 文件似乎不工作完全一样。目前,我无法理解如何正确使用 .d.ts 文件。看来我无法将我的 .js.ts 文件添加到 .d.ts 文件中,所以我的项目将工作的唯一方法是如果它包含所有三个文件类型。这似乎是很多文件。为了帮助我更好地了解 .d.ts 文件与 JavaScript 和 TypeScript 的关系,我有一些问题想问。


  1. 这三个文件有什么关系?他们之间的关系?

  2. 如何使用 *.d.ts 文件?这是否意味着我可以永久删除 *.ts 文件?

  3. 如果是这样, *.d.ts 文件如何知道哪个JS文件映射到自己?


如果有人能给我举个例子,那就太好了。

原文由 user3221822 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 984
2 个回答

“d.ts”文件用于提供关于用 JavaScript 编写的 API 的 typescript 类型信息。这个想法是你正在使用 jQuery 或 underscore 之类的东西,一个现有的 javascript 库。你想从你的打字稿代码中使用那些。

您可以编写仅包含类型注释的 d.ts 文件,而不是重写 jquery 或下划线或打字稿中的任何内容。然后从您的 typescript 代码中,您可以获得静态类型检查的 typescript 好处,同时仍然使用纯 JS 库。

这要归功于 TypeScript 的限制,即不允许您在 import 语句的末尾添加“.ts”扩展名。因此,当您引用某个文件时,比如说 my-module.js ,如果旁边有一个 my-module.d.ts ,那么 TypeScript 将包含其内容:

 src/
  my-module.js
  my-module.d.ts
  index.ts

我的模块.js

 const thing = 42;

module.exports = { thing };

我的模块.d.ts

 export declare const thing: number;

索引.ts

 import { thing } from "./my-module"; // <- no extension

// runtime implementation of `thing` is taken from ".js"
console.log(thing); // 42

// type declaration of `thing` is taken from ".d.ts"
type TypeOfThing = typeof thing; // number

原文由 Chris Tavares 发布,翻译遵循 CC BY-SA 4.0 许可协议

logo
Stack Overflow 翻译
子站问答
访问
宣传栏