@MishaXXL

Как сделать типизацию под случай undefined в объекте?

Как обычно описывают такой случай в интерфейсе для undefined?
cards: Cards = {}
card = this.cards[card_id] // Type 'undefined' cannot be used as an index type.

export interface Cards {
    [x: string]: AnyCard
}

interface AnyCard {
    id: string
    value: string
}


При попытке добавить undefined, все равно ругается
Property 'undefined' of type 'undefined' is not assignable to 'string' index type 'AnyCard'.

export interface Cards {
    [x: string]: AnyCard
    undefined: undefined
}
  • Вопрос задан
  • 75 просмотров
Решения вопроса 1
Aetae
@Aetae Куратор тега TypeScript
Тлен
Никак. Тип undefined не может быть ключом в принципе.
Из вариантов:
1. Убедиться что ключ не undefined руками:
card = card_id && this.cards[card_id];
2. Заставить ts думать, что ключ есть даже если его нет(и взять на себя ответственность за возможные ошибки):
card = this.cards[card_id!];
3. Явно привести к строке:
card = this.cards[String(card_id)];
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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