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
相关产品推荐
相关产品推荐

