Как правильно работают псевдонимы типов в Typescript

Изучаю TypeScript и не понял одного момента.

Наш тип:

  type User = {
    firstName: string,
    pointsCount: number,
  };

Функция:

function doSomething(user: User) {
  console.log(user)
};

Потом мы объявляем новый объект user, но с ещё одним полем age

const user = {
 firstName: "Mike",
 pointsCount: 1000,
 age: 27
}

Теперь, когда мы вызываем функцию doSomething три раза

doSomething({firstName: "Anton", pointsCount: 1000}) // Выведет {firstName: "Anton", pointsCount: 1000}
doSomething(user) // Выведет {firstName: "Mike", pointsCount: 1000, age:27}
doSomething({firstName: "Denis", pointsCount: 500, age: 33}) // Typescript будет ругаться т.к age не существует в типе User

И вот у меня возникает вопрос почему Typescript не ругается на второй вызов. Ведь в типе User также не существует поля age, а аргумент функции указан с типом User


Ответы (0 шт):