声明文件编写
编写与发布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" />