Arrays 为什么我能';无法访问typescript中的子属性?
我有一个打字脚本代码:Arrays 为什么我能';无法访问typescript中的子属性?,arrays,typescript,Arrays,Typescript,我有一个打字脚本代码: 导出界面选择查询{ __typename:“ThingQueryPayload”; 内容:(选择查询内容|空)[]; pageInfo:选择Query\u thing\u pageInfo; } 导出界面选择查询内容{ __字体名称:“东西”; id:字符串; 名称:字符串; } 我想在一个函数中访问name: const itemToString=(数据:SelectQuery\u thing)=>data&&data.content&&data.name 但我得到
导出界面选择查询{
__typename:“ThingQueryPayload”;
内容:(选择查询内容|空)[];
pageInfo:选择Query\u thing\u pageInfo;
}
导出界面选择查询内容{
__字体名称:“东西”;
id:字符串;
名称:字符串;
}
我想在一个函数中访问name:
const itemToString=(数据:SelectQuery\u thing)=>data&&data.content&&data.name
但我得到了:
Property 'name' does not exist on type 'SelectQuery_thing_content[]'
How can I access name?
data.name不存在,因为它是
SelectQuery\u thing
,但data.content
不存在。
data.content是SelectQuery\u thing\u content[]
,它是一个数组
。
要访问.name
,您需要首先为数组编制索引,如:
data.content[index].name;
我会在索引之前检查数组的长度
如果要检查,如果所有名称都存在,则可以使用each()
全部
const itemToString = (data: SelectQuery_thing) =>
data && data.content &&
data.content.length > 0 &&
data.content.every(val => !!val.name);// or (({name}) => !!name)
当您以这种方式在
content
下的name
进行接口时,SelectQuery\u thing[]
在哪里?我修复了错误,我的意思是SelectQuery\u thing\u content[]name是内容中项目的属性,它是数据的一个数组,您正在访问名称,就好像它是数据的属性一样。。。如果内容是数组,您希望使用哪个名称?我需要打印所有名称
const itemToString = (data: SelectQuery_thing) =>
data && data.content &&
data.content.length > 0 &&
data.content.every(val => !!val.name);// or (({name}) => !!name)