Почему типизированная функция принимает аргументом объект в переменной, но не литерал объекта?

Я не могу уложить в голове, почему заранее объявленный объект функция 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});

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