[英]Typescript does not allow an extended class promise to be the return type of an async function
我有一個 class 是從全局 Promise class 擴展而來的,應該有一些額外的正常和異步功能。 像“init”這樣的正常功能正在工作,但像“doSomething”這樣的異步功能卻沒有。
它總是拋出以下 typescript 錯誤:
異步 function 或方法的返回類型必須是全局 Promise 類型。
我不知道為什么它不起作用。 這是我正在處理的代碼。
class MyPromise<T> extends Promise<T> {
private somedata = {};
constructor(executor: (resolve: (value?: T | PromiseLike<T>) => void, reject: (reason?: any) => void) => void) {
super(executor);
}
public static init<T>(executor: (resolve: (value?: T | PromiseLike<T>) => void, reject: (reason?: any) => void) => void): MyPromise<T> {
return new MyPromise(executor);
}
public async doSomething(fnc: () => Promise<number>): MyPromise<T> {
this.somedata = await fnc();
return this;
}
}
更新:@Evert 是對的,這是一個 XY 問題。
async
function 返回內置 Promise。 更改 function 的返回類型不會改變這一點。
因此,您必須將MyPromise<T>
更改為Promise<T>
,或者不使用async
。
當然你仍然可以返回 MyPromise,它只是意味着你需要停止使用 async。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.