【发布时间】:2016-11-30 01:02:44
【问题描述】:
为什么当我尝试以Promise<string> 处理foo 时,以下示例不生成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) 时,我才会收到错误,但这不应该是必需的,因为 TypeScript 编译器足够聪明,可以在检查时将 RHS 的类型推断为 Promise<number>。那么为什么当我尝试做这个任务时它不会对我大喊大叫呢?另外,除了明确指定类型之外,还有其他解决方法吗?我正在使用 TypeScript 2.0.9。
【问题讨论】:
标签: generics typescript promise