javascript - Hur fixar man returtypen för den sista promise i en kedja?
Jag vill returnera det sista löftet i en kedja som resultat av en funktion. Jag använder TypeScript 1.7 och inbyggda ES6-löften.
Jag provade detta, men TS betraktar det första löftet som returvärdet (Uint8Array), inte CryptoKey från importKey. Jag har sett JavaScript-exempel som får mig att tro att det sista löftet faktiskt är returvärdet, så kanske är TS bara förvirrat?
private getKey(): Promise<Uint8Array> {
return localforage.getItem<Uint8Array>("key")
.then<Uint8Array>((derivedKeyData) => {
return crypto.subtle.importKey("raw", derivedKeyData, { name: "AES-GCM" }, false, ["decrypt"]);
});
}
Hur returnerar jag det inre löftet som resultatet av funktionen? Eller åtminstone övertygar TS om att det är vad som verkligen händer utan att göra funktionens returtyp till 'any'?
Svar #1
Jag tittade på din kod på http://www.typescriptlang.org/Playground och problemet verkar vara att den inbyggda resulterande typen av importKey är 'any'
