Почему мы можем назначить интерфейс с большим количеством свойств другому интерфейсу с меньшими затратами? - PullRequest
1 голос
/ 17 июня 2020

Я ожидаю, что следующий код не будет компилироваться. Причина в том, что при присвоении person и expert значению people константа person удовлетворяет типу константы people, которая должна быть типом Person. Однако в expert есть поле skills, которое не существует для типа Person.

Тем не менее, он компилируется.

interface Person {
  name: string;
  age?: number; 
}

interface Developer {
  name: string;
  age?: number;
  skills: string[];
}

const person: Person = {
  name: 'john doe',
  age: 20,
};

const expert: Developer = {
  name: 'jane doe',
  skills: ['javascript', 'react']
};

const people: Person[] = [ person, expert ];

console.log(people);

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...