当我尝试在打字稿中访问我的对象属性时遇到一些问题:
const total = (type: string) => {
return {
status: 'Total',
test: data?[type].total,
};
};
total('first')
这是我的数据的样子:
data: {
first: {
total: 15
},
second: {
total: 515
}
}
尝试访问我得到的属性 TS2339: Property 'total' does not exist on type 'string[]'.
为什么我得到这个以及如何解决这个问题?
答案 0 :(得分:1)
您正在此处寻找 optional chaining operator 并且
data?.[type]
是正确的语法。
如果只是尝试使用 object[property]
读取对象字段,TS 也会抛出错误。它正确地假设不可能仅使用任何 string
读取对象属性,它需要更多特定类型。看看下面的代码。
interface Data {
first: {
total: number
},
second: {
total: number
}
}
const data: Data = {
first: {
total: 15
},
second: {
total: 515
}
}
const total = (type: keyof Data) => {
return {
status: 'Total',
test: data?.[type].total
}
}
total('first')