是否在TypeScript中检查了promise类型参数?

时间:2016-11-27 20:14:18

标签: generics typescript promise

为什么当我尝试将foo作为Promise<string>处理时,以下示例不会生成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。

1 个答案:

答案 0 :(得分:4)

这似乎是known issue(另请参阅#10524,这是此问题的主要跟踪问题),并且链接提交应为fixed in v2.1.2。您应该能够升级,然后按预期正确实施类型。

如果问题在v2.1.x中仍然存在,我的建议是在其问题跟踪器中报告错误。