【发布时间】:2021-11-20 13:53:01
【问题描述】:
我有一个可以有两种孩子的对象
type data = {
name: Names[];
}
type Names = {
name?: string;
names?: string[];
};
我正在编写一个适配器来根据架构配置响应数据
const name = data[dataLength - 1].hasOwnProperty('name') ? data[dataLength - 1].name : data[dataLength - 1].names[0]
data[dataLength - 1].names[0] 是我收到Object is possibly 'undefined'.ts(2532) 的地方
我该如何解决这个问题?
【问题讨论】:
-
data[index].names是names?: string[],即 可选 属性,因此可能确实未定义。您有两个单独的可选属性,不能保证一个或另一个。可能你想要一个更像{ name: string } | { names: string[] }的类型。 -
如果我没看错的话,
data.name是一个Names对象的数组,每个对象本身都可以是一个名称数组,这似乎是一个奇怪的结构(名称的二维数组)。
标签: javascript typescript object