Почему типизированная функция принимает аргументом объект в переменной, но не литерал объекта?
Я не могу уложить в голове, почему заранее объявленный объект функция logPoint
принимает без ошибки. Но если такой же объект в виде литерала передать в параметры сразу в строке вызова функции, то TypeScript ругается что он не соответствует типу Point
?
type Point = {
x: number;
y: number;
}
function logPoint(p: Point) {
console.log(`${p.x}, ${p.y}`);
}
const point = {x: 23, y:-8, z:true};
logPoint(point);
// Object literal may only specify known properties,
// and 'z' does not exist in type 'Point'.(2353)
logPoint({x: 23, y:-8, z:true});