我很好奇,*.d.ts因为我是 TypeScript 的新手。有人告诉我,这种文件类似于 C++ 中的“头文件”,但仅适用于 JS。但是我无法将纯 JS 文件转换为*.d.ts文件,除非我强制将其更改*.js为*.ts. 所以我有三个文件:一个JS文件,一个TS文件和一个*.d.ts文件。
*.d.ts
*.js
*.ts
他们之间是什么关系?
如何使用该*.d.ts文件?这是否意味着我可以*.ts永久删除该文件?
如果是这样,文件如何*.d.ts知道哪个 JS 文件映射到自己?
如果有人能给我举个例子,那就太好了。
“d.ts”文件用于提供关于用 JavaScript 编写的 API 的 typescript 类型信息。这个想法是你正在使用 jQuery 或 underscore 之类的东西,一个现有的 javascript 库。你想从你的打字稿代码中使用那些。
您可以编写仅包含类型注释的 d.ts 文件,而不是重写 jquery 或下划线或打字稿中的任何内容。然后从您的 typescript 代码中,您可以获得静态类型检查的 typescript 好处,同时仍然使用纯 JS 库。
import这要归功于 TypeScript 的限制,即不允许您在语句末尾添加“.ts”扩展名。因此,当您引用某个文件时,比如说,my- module.js如果它my-module.d.ts旁边有一个,那么 TypeScript 将包含它的内容:
import
my- module.js
my-module.d.ts
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