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

TypeScript中??=运算符的含义是什么?附代码示例

关于TypeScript中??=运算符的解释

先看你给出的这段TypeScript代码:

const arrayAA: Record<
    someSchema['propX'],
    typeof arrayBB
> = {};

for (const varB of arrayBB) {
    (arrayAA[someStringValue] ??= []).push(varB)
}

这里的??=是空值赋值运算符,属于ES2021引入的语法,TypeScript完全支持它。它的作用很明确:只有当左侧操作数的值为null或undefined时,才会把右侧的值赋值给左侧;如果左侧已经是一个非null/undefined的有效值,就会保留原值,不执行赋值操作。

对应到你的代码逻辑里,arrayAA[someStringValue] ??= []就等同于:

  • 先判断arrayAA[someStringValue]是否为null或undefined,如果是,就将它赋值为空数组[]
  • 不管有没有执行赋值,最后都会调用.push(varB)往这个数组里添加元素

你后来给出的这段代码,和原代码的逻辑完全一致,是??=运算符的展开写法:

if (arrayAA[someStringValue] === undefined || arrayAA[someStringValue] === null) { 
    arrayAA[someStringValue] = []; 
} 
arrayAA[someStringValue].push(varB)

说白了,??=就是上述判断赋值逻辑的语法糖,能让代码更简洁紧凑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 13:40:44