Pourquoi l'exemple suivant ne génère-t-il pas d'avertissement de compilateur TypeScript (échouant au moment de l'exécution) lorsque j'essaie de travailler sur foo
en tant que Promise<string>
?Les paramètres de type de promesse sont-ils cochés dans TypeScript?
let foo: Promise<string> = Promise.resolve(10); // should not compile
foo.then(v => v.toUpperCase());
// -> TypeError: v.toUpperCase is not a function
Seulement si je mets Promise.resolve<string>(10)
-je obtenir une erreur, mais cela ne devrait pas être le nécessaire comme le compilateur dactylographiée est assez intelligent pour déduire le type de l'ERS comme Promise<number>
lors de l'inspection. Alors pourquoi ça ne me crie pas quand j'essaye de faire ce devoir? En outre, existe-t-il une solution de contournement pour cela autre que la spécification de type explicitement? J'utilise TypeScript 2.0.9.