Búsqueda de sitios web

javascript - ¿Cómo arreglar el tipo de retorno de la última promesa en una cadena?


Quiero devolver la última promesa en una cadena como el resultado de una función. Estoy usando TypeScript 1.7 y promesas nativas de ES6.

Lo intenté, pero TS considera la primera promesa como el valor de retorno (el Uint8Array), no la CryptoKey de importKey. He visto ejemplos en JavaScript que me hacen pensar que la última promesa es en realidad el valor de retorno, así que tal vez TS simplemente está confundido?

private getKey(): Promise<Uint8Array> {
    return localforage.getItem<Uint8Array>("key")
        .then<Uint8Array>((derivedKeyData) => {
            return crypto.subtle.importKey("raw", derivedKeyData, { name: "AES-GCM" }, false, ["decrypt"]);
        });
}

¿Cómo devuelvo la promesa interna como el resultado de la función? ¿O al menos convencer a TS de que eso es lo que realmente está pasando sin hacer que el tipo de retorno de la función sea "any"?

Respuesta #1

He echado un vistazo a tu código en http://www.typescriptlang.org/Playground y el problema parece ser que el tipo resultante incorporado de importKey es 'any'