@yarnstart
Превозмогание и React

Как работает конструкция type t = {...}[keyof T]?

Пример кода:
Код

type user = {
    id: number,
    name: string,
};

type getUserKeysWithoutNumberType<T> = {
    [key in keyof T]: T[key] extends number ? never : T[key];
}[keyof T];

const wtf: getUserKeysWithoutNumberType<user> = 'name';



Интересует конструкция {...}[keyof T], есть ли где-то описание её работы ? В данном случае она выбирает ключи из объекта, значения которых не равны never, где можно почитать об этом более подробно ?
И что это вообще за конструкция {...}[...] ?
  • Вопрос задан
  • 122 просмотра
Решения вопроса 1
Aetae
@Aetae Куратор тега TypeScript
Тлен
Обычное обращение по ключу, как в javascript, что тут непонятного?
const foo = {
  bar: 1
};
foo['bar'] // 1
const baz = {
  qux: 2
}['qux']; // 2
тайпскрит в работе с типами тут ничем не отличается:
type user = {
    id: number,
    name: string,
};
type id = user['id']; // number
type userKeys = keyof user; // 'id' | 'name'
type userTypes = user[keyof user]; // number | string
тип never же просто не учитывается:
number | string | never - то же самое что number | string.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы