@Kolya112151

Как работает Mapped Types в TypeScript?

interface Car {
name: string
color: string
speed: number
}

interface NewCar {
[P in keyof Car]: string
}

Каким образом в [P in keyof Car] переменной P присваиваются имена свойств Car?
Если in просто проверяет наличие свойства и возвращает true/false.
Само выражение выглядит, непонятно. Что значит P in keyof Car?
Чем является P, если оно нигде не определено? undefined?
Тогда получается undefined in keyof Car всегда возвращает false.
Как происходит итерация и зачем тогда проверять P на наличие в keyof Car, если эти ключи просто присваиваются переменной P на каждой итерации? Короче бред какой-то.
  • Вопрос задан
  • 133 просмотра
Пригласить эксперта
Ответы на вопрос 1
@HungryGrizzzly
Сумасшедший кросс
Выражение P in keoyf Car значит P = ключ из Car, а именно, name, color, speed. [P in keyof Car] значит, что поля NewCar должны быть name, color, speed. Сделано это для удобства. Любой объект типа NewCar должен иметь эти поля.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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