我已经声明了一个类型别名:
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,为什么会发生这种情况?
错误TS1055:类型'ActivationPromise'不是ES5/ES3中的有效异步函数返回类型,因为它不引用与Promise兼容的构造函数
避免类型别名承诺
如果你是别名,请确保你有一个支持它的值,这将是上面提到的Promise-compatible constructor实例:
export type ActivationPromise = Promise<void>;
export const ActivationPromise = Promise<void>;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2656 次 |
| 最近记录: |