1

我想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's type isExtract<keyof T, string>而不是 just keyof T
  2. Object 的key总是字符串类型,所以Extract<keyof T, string>什么都不做,对吧?
4

1 回答 1

0

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

于 2019-03-22T21:40:09.360 回答