簡體   English   中英

Typescript 不允許擴展的 class promise 成為異步 ZC1C425268E68385D1AB4Z5074C 的返回類型

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM