Con TypeScript 1.6 e nativo es6 Promises Ricevo un errore ogni volta che utilizzo Promise.all([])
con due tipi di restituzione diversi. Ad esempio:TypeScript: L'argomento del tipo per il parametro di tipo 'R' non può essere dedotto dall'uso
let onePromise:Promise<string[]> = getOne();
let twoPromise:Promise<MyObject> = getTwo();
Promise.all([onePromise, twoPromise])
.then((values:[string[], MyObject]) => {
let one:string[] = values[0];
let two:MyObject = values[1];
// do stuff
});
In questo esempio si ottiene un errore sulla linea Promise.all
dal compilatore tipografico error TS2453: The type argument for type parameter 'R' cannot be inferred from the usage. Consider specifying the type arguments explicitly. Type argument candidate 'string[]' is not a valid type argument because it is not a supertype of candidate 'MyObject'. Property 'length' is missing in type 'MyObject'.
realtà ho un altro esempio di questo, dove la seconda e la terza frase dell'errore sono differenti, ma quella prima frase è la stessa. Quindi, in sostanza, mi chiedo quale sia la sintassi per "specificare esplicitamente gli argomenti del tipo". Non riesco a capirlo. Il codice funziona bene, ma mi piacerebbe sbarazzarmi di questo avvertimento del traspolatore.
In realtà mi piace molto perché ha digitato. Poiché 'Promise.all' trasforma un array' Promessa [] 'in una' Promessa ', ha senso specificare quale' T' è, usando un tipo di unione. Quindi potremmo definire 'type T = string [] | MyObject' per rendere il codice più chiaro –