我已经声明了一个类型别名:
export type ActivationPromise = Promise<void>;
我写了以下功能:
async function derp(): ActivationPromise {
await test();
}
function test() : ActivationPromise {
return Promise.resolve();
}
我的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
}
当我编译时,我得到:
错误TS1055:输入&#39; ActivationPromise&#39;在ES5 / ES3中不是有效的异步函数返回类型,因为它不引用与Promise兼容的构造函数
如果我将返回类型更改为Promise<void>
,则代码编译正常。仅在使用类型别名时,才会出现问题。由于类型别名应该只是typedef
,为什么会发生这种情况?
答案 0 :(得分:8)
错误TS1055:输入&#39; ActivationPromise&#39;在ES5 / ES3中不是有效的异步函数返回类型,因为它不引用与Promise兼容的构造函数
避免类型别名承诺
如果您是别名,请确保您有一个value backing it as well,它将是提及的Promise-compatible constructor
实例:
export type ActivationPromise = Promise<void>;
export const ActivationPromise = Promise<void>;