为什么通用告诉我propery不存在



在一个文件中,我有下一个代码

function test<T extends {}>(arg:T):any {
return arg.name
}

在另一个我有下一个代码

interface IItem  {
name: string
}
console.log(test<IItem>({name:'3'}))

为什么在尝试调用args对象的name属性时会出现错误?在具有测试功能的文件中声明接口不是的选项

因为您正在扩展可能没有name属性的{}。它可能根本没有任何属性。

你可以这样做:

function test<T extends { name: string }>(arg: T): any {
// function test<T extends IItem>(arg: T): any {
return arg.name
}

最新更新