如何通过声明文件重写原生Error类的cause属性类型?
重写原生Error接口的cause类型
要把原生Error类的cause属性从默认的unknown类型改成自定义枚举类型,你可以通过TypeScript的声明文件结合接口合并特性实现,步骤如下:
- 先定义你的自定义枚举类型:
// 业务相关的错误原因枚举 enum ErrorCause { NetworkFailure = "NETWORK_FAILURE", InvalidInput = "INVALID_INPUT", NotFound = "NOT_FOUND" }
- 创建一个
.d.ts声明文件(比如命名为error.d.ts),在里面重新声明Error接口并覆盖cause的类型:
// error.d.ts interface Error { cause: ErrorCause; }
- 如果是在模块文件中编写声明,需要用
declare global包裹接口声明,并添加export {}确保文件被识别为模块:
// error.d.ts declare global { interface Error { cause: ErrorCause; } } export {};
完成后,TypeScript会将所有Error实例的cause属性类型识别为你定义的ErrorCause枚举,而非默认的unknown。
内容的提问来源于stack exchange,提问作者Gabriel Nadaleti
相关产品推荐
相关产品推荐

