【问题标题】:Typescript: for (let key in obj), `key` is `Extract<keyof T, string>` instead of just `keyof T`, why?Typescript: for (let key in obj), `key` 是 `Extract<keyof T, string>` 而不是 `keyof T`,为什么?
【发布时间】:2019-08-05 13:53:46
【问题描述】:

我想iterate 超过object,当我使用for-in 时,我注意到一个非常奇怪的事情:

function forIn<T extends object>(obj: T): void {
  for (let key in obj) {
    // key's type is `Extract<keyof T, string>` instead of just `keyof T`
  }
}

我的 VSCode 截图:

这引出了两个问题:

  1. 为什么key 的类型是Extract&lt;keyof T, string&gt; 而不仅仅是keyof T
  2. 对象的keys 总是字符串类型,所以Extract&lt;keyof T, string&gt; 什么都不做,对吧?

【问题讨论】:

  • TypeScript 2.9 expanded 键类型还包括 numbersymbol 类型。
  • 谢谢你,你回答了我的问题。

标签: typescript for-loop generics extract keyof


【解决方案1】:

TypeScript 2.9 扩展了键类型以包括数字和符号类型。

【讨论】:

    猜你喜欢
    • 2021-07-19
    • 2020-01-02
    • 2019-11-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多