@RDMStreet

Как обратиться к свойству объекта в typescript, если оно есть только в одном из нескольких возможных типов этого объекта?

Как в данном случае грамотно обойти эту ошибку без пересмотра типизации объекта? На ум приходит только console.log((test as any).b), но это кажется плохим решением.

UPD: типизацию объекта изменить не могу. Объект на скрине создал только для примера. В реальной ситуации объект приходит из сторонней библиотеки и его типизация определяется в результате выполнения длинной последовательности разных функций. Таким образом приходится работать с тем что имеем.

62f6171cef344871423398.png
  • Вопрос задан
  • 242 просмотра
Решения вопроса 1
Aetae
@Aetae Куратор тега TypeScript
Тлен
Как и во всех подобных случаях - проверить какой конкретно у тебя там тип перед использованием:
declare const a: {a: 1, b: 2} | {a: 1};

if ('b' in a) { // ts тут сужает тип до {a: 1, b: 2}
  console.log(a.b);
}

P.S. Ты нарушаешь правило 3.8, не делай так.

Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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