В TypeScript, когда свойство объекта может быть наличествовать только в одном из нескольких возможных типов этого объекта, вам нужно выполнить две операции:
1. Проверить тип объекта
2. Обратиться к свойству, если оно существует только в определенном типе
Для выполнения первой операции можно использовать оператор instanceof
или проверку типа typeof
. Рассмотрим два примера.
1. Использование оператора instanceof
:
if (obj instanceof TypeA) { // Обратиться к свойству для объекта типа TypeA } else if (obj instanceof TypeB) { // Обратиться к свойству для объекта типа TypeB } else if (obj instanceof TypeC) { // Обратиться к свойству для объекта типа TypeC } else { // Обратиться к свойству для объекта другого типа }
2. Использование проверки типа typeof
:
if (typeof obj === 'TypeA') { // Обратиться к свойству для объекта типа TypeA } else if (typeof obj === 'TypeB') { // Обратиться к свойству для объекта типа TypeB } else if (typeof obj === 'TypeC') { // Обратиться к свойству для объекта типа TypeC } else { // Обратиться к свойству для объекта другого типа }
После проверки типа объекта, вы можете безопасно обратиться к свойству объекта, которое существует только в определенном типе. Пример:
if (obj instanceof TypeA) { console.log(obj.propertyA); // Обратиться к свойству для объекта типа TypeA } else if (obj instanceof TypeB) { console.log(obj.propertyB); // Обратиться к свойству для объекта типа TypeB } else if (obj instanceof TypeC) { console.log(obj.propertyC); // Обратиться к свойству для объекта типа TypeC } else { console.log(obj.property); // Обратиться к свойству для объекта другого типа }
Таким образом, используя оператор instanceof
или проверку типа typeof
, вы можете безопасно обратиться к свойству объекта, которое существует только в одном из нескольких он типов.