2016-11-27 5 views
3

fooPromise<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を使用しています。

答えて

4

これはknown issue(この問題の主なトラッキングの問題である#10524も参照)であり、リンクコミットによってfixed in v2.1.2である必要があります。あなたはアップグレードすることができなければなりませんし、タイプは意図どおり適切に実施されます。

v2.1.xでも問題が解決しない場合は、問題追跡ツールにバグを報告することをお勧めします。

関連する問題