I get an error as expected, when passing an array with object literals to a function, because they do not have a corresponding property in the type they're being assigned to.
type hasAge = {
age: number;
};
function getOldest(items: hasAge[]): hasAge {
return items.sort((a, b) => b.age - a.age)[0];
}
let oldest = getOldest([
{ age: 22, name: "Pete" },
{ age: 87, name: "Daniel" },
{ age: 36, name: "Jessica" },
]); //Type error - Object literal may only specify known properties
No problems will be detected, when passing an array as a variable:
let people = [
{ age: 22, name: "Pete" },
{ age: 87, name: "Daniel" },
{ age: 36, name: "Jessica" },
];
let oldest = getOldest(people);
Even destructuring the array is not going to cause a problem:
let people = [
{ age: 22, name: "Pete" },
{ age: 87, name: "Daniel" },
{ age: 36, name: "Jessica" },
];
let oldest = getOldest([...people]);
What am i missing? Aren't all function calls basically the same?