我想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 截图:
这引出了我两个问题:
- 为什么
key
's type isExtract<keyof T, string>
而不是 justkeyof T
? - Object 的
key
总是字符串类型,所以Extract<keyof T, string>
什么都不做,对吧?