如何用TypeScript实现Promise接口并修复CarResult类实现报错?
错误原因
你使用implements Promise<CarElement>时,TypeScript 要求CarResult类必须完整实现 Promise 接口定义的所有成员,包括报错提示的then、catch、finally方法和[Symbol.toStringTag]内置属性,当前类仅定义了bus属性,不符合接口约束,因此抛出错误。
另外你的代码还存在一处隐藏的类型不匹配:CarElement接口定义的bus是Promise<Int32Array>类型,但你在CarResult里声明的bus是Int32Array类型,二者并不兼容,后续也需要修正。
修复方案
根据你的实际需求选择对应方案即可:
方案一:需要CarResult本身是Promise子类
无需手动实现所有Promise方法,直接继承内置的Promise类即可满足类型要求:
export interface CarElement { bus: Promise<Int32Array>; } class CarResult extends Promise<CarElement> { constructor() { super((resolve, reject) => { // 此处编写你的异步业务逻辑,示例: const busData = new Int32Array(8); resolve({ bus: Promise.resolve(busData) }); }); } }
方案二:仅需要CarResult持有CarElement结构数据,不需要是Promise类型
移除implements Promise<CarElement>,改为直接实现CarElement接口即可:
export interface CarElement { bus: Promise<Int32Array>; } class CarResult implements CarElement { // 修正bus类型为Promise<Int32Array> bus: Promise<Int32Array> = Promise.resolve(new Int32Array()); }
内容的提问来源于stack exchange,提问作者sunjiayang
相关产品推荐
相关产品推荐

