foo
をPromise<string>
として処理しようとすると、次の例では(実行時に失敗する)TypeScriptコンパイラ警告が生成されないのはなぜですか?私はPromise.resolve<string>(10)
が、私はエラーが出るんが、それは活字体コンパイラとして要求されるべきではない置く場合のみTypeScriptで約束されたタイプのパラメータがチェックされていますか?
let foo: Promise<string> = Promise.resolve(10); // should not compile
foo.then(v => v.toUpperCase());
// -> TypeError: v.toUpperCase is not a function
は、検査時にPromise<number>
としてRHSの種類を推測するのに十分なスマートです。それで、私がこの課題をやろうとすると、なぜ私に叫ばないのですか?また、タイプを明示的に指定する以外の回避策がありますか?私はTypeScript 2.0.9を使用しています。