3
爲什麼當我嘗試使用foo
作爲Promise<string>
時,以下示例不生成TypeScript編譯器警告(而不是在運行時失敗)?在TypeScript中檢查承諾類型參數嗎?
let foo: Promise<string> = Promise.resolve(10); // should not compile
foo.then(v => v.toUpperCase());
// -> TypeError: v.toUpperCase is not a function
只有當我把Promise.resolve<string>(10)
做我得到一個錯誤,但不應該將需要作爲打字稿編譯器足夠聰明檢查時推斷RHS的類型爲Promise<number>
。那麼當我嘗試完成這項任務時,爲什麼它不會吼我?此外,除了明確指定類型之外,是否有任何解決方法?我使用的是TypeScript 2.0.9。