【问题标题】:Are promise type parameters checked in TypeScript?TypeScript 中是否检查了 Promise 类型参数?
【发布时间】: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&lt;string&gt;(10) 时,我才会收到错误,但这不应该是必需的,因为 TypeScript 编译器足够聪明,可以在检查时将 RHS 的类型推断为 Promise&lt;number&gt;。那么为什么当我尝试做这个任务时它不会对我大喊大叫呢?另外,除了明确指定类型之外,还有其他解决方法吗?我正在使用 TypeScript 2.0.9。

【问题讨论】:

    标签: generics typescript promise


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-01-08
      • 2016-09-29
      • 2018-06-08
      • 2018-07-26
      • 2021-05-29
      • 1970-01-01
      • 2020-09-21
      • 1970-01-01
      相关资源
      最近更新 更多