小编典典

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

all

我很好奇,*.d.ts因为我是 TypeScript 的新手。有人告诉我,这种文件类似于 C++ 中的“头文件”,但仅适用于 JS。但是我无法将纯 JS
文件转换为*.d.ts文件,除非我强制将其更改*.js*.ts. 所以我有三个文件:一个JS文件,一个TS文件和一个*.d.ts文件。


  1. 他们之间是什么关系?

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

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


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


阅读 154

收藏
2022-03-11

共1个答案

小编典典

“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 将包含它的内容:

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
2022-03-11