Машинописный текст: для (пусть key в obj) `ключ` - это` Извлечение <keyof T, string> `вместо просто` keyof T`, почему? - PullRequest
0 голосов
/ 14 марта 2019

Я хочу 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:

enter image description here

Это приводит меня к двум вопросам:

  1. Почему тип key является Extract<keyof T, string> вместо просто keyof T?
  2. Объект key всегда строкового типа, поэтому Extract<keyof T, string> ничего не делает, верно?

1 Ответ

0 голосов
/ 23 марта 2019

TypeScript 2.9 расширенные типы ключей, включающие также числа и типы символов.

...