gpt4 book ai didi

typescript - TypeScript : No type error when passing an array with object literals as a reference/variable

转载 作者:行者123 更新时间:2023-12-02 10:52:28 26 4
gpt4 key购买 nike

当将带有对象常量的数组传递给函数时,出现了预期的错误,因为它们在分配给它们的类型中没有对应的属性。

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
将数组作为变量传递时,不会检测到任何问题:
let people = [
{ age: 22, name: "Pete" },
{ age: 87, name: "Daniel" },
{ age: 36, name: "Jessica" },
];
let oldest = getOldest(people);
甚至破坏数组也不会引起问题:
let people = [
{ age: 22, name: "Pete" },
{ age: 87, name: "Daniel" },
{ age: 36, name: "Jessica" },
];
let oldest = getOldest([...people]);
我想念什么?不是所有的函数调用都基本相同吗?

最佳答案

当您传递数组类型脚本时,它使用的是鸭子类型,因此只会困扰于必需的属性,而不是多余的属性。
https://www.typescriptlang.org/docs/handbook/interfaces.html
对于第一种情况,当您使用对象文字时,请参见此
Why am I getting an error "Object literal may only specify known properties"?

关于typescript - TypeScript : No type error when passing an array with object literals as a reference/variable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64080923/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com