TypeScript 声明文件(Declaration Files)用于描述 JavaScript 代码中存在但 TypeScript 编译器无法理解的部分。它们通常具有 .d.ts 扩展名,并包含了类型信息、接口、命名空间等。

创建声明文件

假设你有一个 JavaScript 库,比如一个名为 myLibrary 的库,而你想要在 TypeScript 中使用它。首先,你可以创建一个声明文件 myLibrary.d.ts,并在其中提供相应的类型信息。
// myLibrary.d.ts

// 声明全局变量或函数
declare const myGlobalVar: number;

declare function myFunction(arg1: string, arg2: number): void;

// 声明一个简单的对象
declare const myObject: {
    prop1: string;
    prop2: number;
};

// 声明一个简单的类
declare class MyClass {
    constructor(arg: string);
    method(): void;
}

// 声明命名空间
declare namespace MyNamespace {
    export const myNamespaceVar: boolean;
    export function myNamespaceFunction(): void;
}

// 更多类型声明...

引用声明文件

在 TypeScript 项目中,可以通过 /// <reference path="myLibrary.d.ts" /> 或者在 tsconfig.json 文件中的 files 或 include 字段中引用声明文件。
// main.ts
/// <reference path="myLibrary.d.ts" />

// 现在可以使用 myLibrary 中的内容了
myFunction("hello", 42);

const obj: { prop1: string; prop2: number } = myObject;

const instance = new MyClass("instance");
instance.method();

MyNamespace.myNamespaceFunction();

或者在 tsconfig.json 中:
{
  "compilerOptions": {
    // 其他编译选项...
  },
  "files": [
    "main.ts",
    "myLibrary.d.ts"
  ]
}

使用 @types 包

许多流行的 JavaScript 库已经有了官方维护的声明文件,可以通过 @types 包来安装。比如,如果你想使用 lodash,你可以运行以下命令:
npm install @types/lodash --save-dev

这会在你的 node_modules 目录下安装 @types/lodash 包,其中包含了 lodash 库的声明文件。

DefinitelyTyped 社区

有一个名为 DefinitelyTyped 的社区,它为许多 JavaScript 库提供了高质量的 TypeScript 声明文件。可以在 [DefinitelyTyped 的 GitHub 仓库](https://github.com/DefinitelyTyped/DefinitelyTyped) 中找到并贡献声明文件。

总体而言,TypeScript 声明文件是将 JavaScript 库与 TypeScript 整合的重要工具,它们允许你在 TypeScript 中获得更好的类型检查和智能感知。


转载请注明出处:http://www.pingtaimeng.com/article/detail/13027/TypeScript