You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

TypeScript如何向对象可能不存在的键对应数组推送数据

错误原因

你初始化的orderedNotifications是空对象,首次访问某个不存在的month属性时,返回值为undefined,调用undefined的push方法就会触发该 TypeError。

解决方案

在执行push操作前,先判断对应月份的键是否存在,不存在则先初始化为空数组即可,有以下几种常用写法:

  • 基础判断写法,兼容性最好,逻辑直观:
// 不存在对应月份键时初始化空数组
if (!orderedNotifications[month]) {
  orderedNotifications[month] = [];
}
orderedNotifications[month].push({
  fullDate,
  weekday,
  info,
});
  • 空值合并运算符简化写法,更简洁,且只会在属性值为undefined/null时才初始化,不会误覆盖空数组等合法值:
orderedNotifications[month] = orderedNotifications[month] ?? [];
orderedNotifications[month].push({
  fullDate,
  weekday,
  info,
});
  • 极简一行写法,适合熟悉语法的场景使用:
(orderedNotifications[month] ?? (orderedNotifications[month] = [])).push({
  fullDate,
  weekday,
  info,
});

内容的提问来源于stack exchange,提问作者Stephan Psaras

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 11:54:00