typescript - TS1055 när man använder async/await med en typalias
Jag har deklarerat en typalias:
export type ActivationPromise = Promise<void>;
Jag har skrivit följande funktioner:
async function derp(): ActivationPromise {
await test();
}
function test() : ActivationPromise {
return Promise.resolve();
}
Min 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
}
När jag kompilerar får jag:
fel TS1055: Typen 'ActivationPromise' är inte en giltig returtyp för en asynkron funktion i ES5/ES3 eftersom den inte refererar till en konstruktor som är kompatibel med Promise
Om jag ändrar returtypen till helt enkelt Promise<void>, kompileras koden utan problem. Endast när jag använder typaliaset uppstår problemet. Eftersom typaliaset bara borde fungera som en typedef, varför händer detta?
Svar #1
fel TS1055: Typen 'ActivationPromise' är inte en giltig returtyp för en asynkron funktion i ES5/ES3 eftersom den inte refererar till en konstruktor som är kompatibel med Promise
Förslag
Avstå från att typaliasa löften 🌹
Fixa
Om du använder alias, se till att du också har ett värde som stöder det, vilket kommer att vara den nämnda Promise-kompatibla konstruktör-instansen:
export type ActivationPromise = Promise<void>;
export const ActivationPromise = Promise<void>;
