如何检查地址是否为空?如果地址为空,则将城市,州和国家/地区设置为黑色字符串。代码是这样的,
const getOrdersData = (
data: OrderDataProps
): [] | {} => {
return data.map(
({
transactionDetail: {
orderedAtUserTz,
amountInCents: { total },
status,
contactByContactId: {
emailAddresses,
gender,
address: { city, state, country },
name: { firstName, fullName },
},
items,
},
id,
settledAmount,
}: Transaction) => ({
date: [orderedAtUser],
amount: [settledAmount, status],
location: [city, state, country],
customer: [
firstName || fullName,
emailAddresses && emailAddresses[0] ? emailAddresses[0].email : '',
gender,
],
products: items,
id,
})
)
}
如果地址为空,则会引发类似can't read property city of null.
答案 0 :(得分:1)
首先,在使用接口时,请确保您传递的参数是针对每个接口结构的,否则 使用这种类型严格的接口将毫无意义。 假设您的地址不应该是 null,它应该是带有空白字符串或至少一个空对象的键的对象。
因此,如果我们有空白对象,考虑到这一点,将默认值作为空白字符串传递是有意义的。不需要更改回调函数,但可能必须更改Transaction
接口属性。
因此,在破坏论证的同时
例如:
{city = '', state ='', country=''}
如果还是要使用address
作为null
的值。我们需要验证
回调函数。需要维护一个address
属性,而不是
在参数中将其分解为city, state
等。
例如:
{
...
gender,
address,
...
}
在回调函数中,我们需要对其进行验证和重构。
() =>{
let location = []; // or ['','','']
if(address){
const {city, state, country} = address;
location = [city, state, country];
}
return {
...,
location
...
}
}