Dev Highlights

Доки по разработке

This project is maintained by teniryte

Дискриминированные объединения

Принципы

Пример

interface Person {
  firstName: string;
  surname: string;
  contactType: 'person';
}

interface Organisation {
  name: string;
  contactType: 'organisation';
}

type Contact = Person | Organisation;

function sayHello(contact: Contact) {
  switch (contact.contactType) {
    case 'person':
      console.log('Hello ' + contact.firstName);
      break;
    case 'organisation':
      console.log('Hello ' + contact.name);
      break;
  }
}

Практика