如何编写.d.ts文件为AbortSignal添加timeout静态属性?
解决TypeScript中AbortSignal.timeout类型缺失的问题
TypeScript的DOM内置类型里缺少AbortSignal.timeout的定义时,不能直接声明同名命名空间——因为AbortSignal在lib.dom.d.ts中是以接口+构造函数接口的形式存在的,直接声明命名空间会触发重复标识符错误。
正确的做法是通过声明合并扩展AbortSignal的构造函数接口,添加静态方法timeout的类型定义:
declare global { interface AbortSignalConstructor { timeout(milliseconds: number): AbortSignal; } } // 必须添加这行,让文件被识别为模块,避免全局作用域冲突 export {};
关键说明:
AbortSignalConstructor是TypeScript用来描述AbortSignal构造函数类型的内置接口,扩展它就能为构造函数添加静态方法的类型定义- 用
declare global包裹是为了在全局作用域下扩展内置接口 export {}不可省略,否则TypeScript会将该文件视为全局脚本,可能导致类型合并异常
将上述代码保存为abort-signal-timeout.d.ts,并确保该文件被包含在你的tsconfig.json的include配置中,TypeScript就能识别AbortSignal.timeout的类型了。
内容的提问来源于stack exchange,提问作者Taymon
相关产品推荐
相关产品推荐

