TS1055使用async/await时使用类型别名

Seb*_*zzz 8 typescript

我已经声明了一个类型别名:

export type ActivationPromise = Promise<void>;
Run Code Online (Sandbox Code Playgroud)

我写了以下函数:

async function derp(): ActivationPromise {
    await test();
}

function test() : ActivationPromise {
    return Promise.resolve();
}
Run Code Online (Sandbox Code Playgroud)

我的tsconfig.json:

{
    "compilerOptions": {
        "noImplicitAny": true,
        "removeComments": true,
        "preserveConstEnums": true,
        "sourceMap": true,
        "module": "commonjs",
        "target": "es5",
        "allowJs": true,
        "alwaysStrict": true,
        "importHelpers": true,
        "lib": [ "dom", "es5", "es2015.promise", "es2015.iterable", "scripthost"]
    },
    "compileOnSave": false
}
Run Code Online (Sandbox Code Playgroud)

当我编译时,我得到:

错误TS1055:类型'ActivationPromise'不是ES5/ES3中的有效异步函数返回类型,因为它不引用与Promise兼容的构造函数

如果我将返回类型更改为简单Promise<void>,则代码编译正常.仅在使用类型别名时,才会出现问题.由于类型别名应该只是作为一个typedef,为什么会发生这种情况?

bas*_*rat 9

错误TS1055:类型'ActivationPromise'不是ES5/ES3中的有效异步函数返回类型,因为它不引用与Promise兼容的构造函数

建议

避免类型别名承诺

固定

如果你是别名,请确保你有一个支持它值,这将是上面提到的Promise-compatible constructor实例:

export type ActivationPromise = Promise<void>;
export const ActivationPromise = Promise<void>;
Run Code Online (Sandbox Code Playgroud)

  • 希望 Typescript 能够解决这个问题。 (2认同)