我有一个打字稿代码:
export interface SelectQuery_thing {
__typename: "ThingQueryPayload";
content: (SelectQuery_thing_content | null)[];
pageInfo: SelectQuery_thing_pageInfo;
}
export interface SelectQuery_thing_content {
__typename: "Thing";
id: string;
name: string;
}
我想通过一个函数访问名称:
const itemToString = (data: SelectQuery_thing) => data && data.content && data.name
但是我得到了
Property 'name' does not exist on type 'SelectQuery_thing_content[]'
How can I access name?
答案 0 :(得分:1)
data.name不存在,因为它是SelectQuery_thing
,但是data.content
存在。
data.content是SelectQuery_thing_content[]
,它是array
。
要访问.name
,您需要先索引数组,例如:
data.content[index].name;
在建立索引之前,我会检查数组的长度。
如果要检查是否所有名称都存在,则可以使用every();
data.content.every(val => !!val.name);
一起
const itemToString = (data: SelectQuery_thing) =>
data && data.content &&
data.content.length > 0 &&
data.content.every(val => !!val.name);// or (({name}) => !!name)