前置知识: TypeScript

声明文件编写

1 minIntermediate2026/6/14

编写与发布TypeScript声明文件

1. 声明文件基础

// .d.ts 文件
declare const myLib: {
  version: string;
  doSomething(value: string): number;
};

// 声明模块
declare module 'my-lib' {
  export function doSomething(value: string): number;
  export const version: string;
}

2. 全局声明

// global.d.ts
declare global {
  interface Window {
    myApp: {
      version: string;
      init(): void;
    };
  }
}

export {};

3. 模块声明

// types/my-lib/index.d.ts
declare module 'my-lib' {
  interface Options {
    timeout?: number;
    retries?: number;
  }

  export function request(url: string, options?: Options): Promise<Response>;
  export class Client {
    constructor(baseURL: string);
    get<T>(url: string): Promise<T>;
  }
  export default Client;
}

4. 声明合并

// 扩展第三方类型
declare module 'express' {
  interface Request {
    userId?: string;
    userRole?: 'admin' | 'user';
  }
}

5. 发布声明文件

// package.json
{
  "name": "@types/my-lib",
  "types": "index.d.ts",
  "files": ["index.d.ts"]
}

6. 三斜线指令

/// <reference path="./utils.d.ts" />
/// <reference types="node" />
/// <reference lib="es2020" />