类型脚本:对于(在obj中使用let键),key是`Extract <keyof t,=“” string =“”>`而不是`keyof T`,为什么?

时间:2019-03-14 15:31:42

标签: typescript for-loop generics extract keyof

我想在iterateobject,当我使用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屏幕截图:

enter image description here

这给我带来两个问题:

  1. 为什么key的类型是Extract<keyof T, string>而不是keyof T
  2. 对象的key始终是字符串类型,所以Extract<keyof T, string>完全不执行任何操作,对吧?

1 个答案:

答案 0 :(得分:0)

TypeScript 2.9扩展了键类型,使其还包括数字和符号类型。