Как правильно работают псевдонимы типов в 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