错误 TS1243:'async' 修饰符不能与 'abstract' 修饰符一起使用

error TS1243: 'async' modifier cannot be used with 'abstract' modifier

在我的项目中,我使用的是 Typescript@4.0.3,它运行良好,但现在我将其版本更新到最新的 Typescript@4.1.3,它给我带来了很多错误。我无法在文档中找到任何内容,也不知道如何解决此问题。

这是我的代码:

abstract class SystemValidator {

    constructor() {}

    abstract async validate(addr:Addr):Promise<[boolean, Addr[], SystemValidationErrors]>

}

这是给我的错误:

error TS1243: 'async' modifier cannot be used with 'abstract' modifier.

有解决此问题的想法吗??我应该从这里删除 aync 吗?

是的,您应该删除 async

你不应该强制使用 async 到实现它的 class。 return 和 Promise 还有其他方法,而不仅仅是 async.

编辑:

因为有些人不清楚为什么 async 不重要。这里有几种 return 承诺的方法:

async function iAmAsync(): Promise<boolean>{
    return false;
}

function iAmNotAsync(): Promise<boolean>{
 return new Promise(resolve => resolve(false));
}

function iAmAlsoNotAsync(): Promise<boolean>{
 return new Observable().pipe(first()).toPromise();
}

iAmAsync().then();
iAmNotAsync().then();

Playground Link