如何将数据推送到打字稿中可能尚不存在的对象键
2021-10-07
664
我在这里定义了一个接口:
interface Notification {
fullDate: string;
weekday: string;
info: {
title: string;
subtitle: string;
read: boolean;
};
}
后来,我定义了一个该类型的 const:
const orderedNotifications: { [month: string]: Notification[] } = {};
我从外部获取数据并使用 foreach 循环,从中获取包含从相同月份检索的数据的对象列表。我想检查对象是否以该月份为键,如果没有,则创建它并将所有类似月份的数据推送到该键。我尝试过这样的方法:
orderedNotifications[month].push({
fullDate,
weekday,
info,
});
其中
month
是带有帖子月份的变量。不幸的是,我收到 TypeError:无法读取未定义的属性(读取“推送”)
2个回答
您收到
TypeError:无法读取未定义的属性(读取“push”)
,因为
month
键未在
orderedNotifications
对象内定义。
使用以下代码:
// This line will solve your issue as it is
// checking if the key already exist do nothing
// otherwise set empty array on it.
orderedNotifications[month] = orderedNotifications[month] || [];
orderedNotifications[month].push({
fullDate,
weekday,
info,
});
ziishaned
2021-10-07
只需添加一个 if 检查,如果尚不存在则添加它...我真傻。
if (!(month in orderedNotifications)) {
orderedNotifications[month] = [
{
fullDate,
weekday,
info,
},
];
} else {
orderedNotifications[month].push({
fullDate,
weekday,
info,
});
}
Stephan Psaras
2021-10-07