是否有打字稿运算符仅在满足某些条件时才设置对象的属性?



我有两个Typescript对象xy,定义如下:

let x = {A: 1, B: 2};
console.log('x = ', x);
let y = {A: 1};
console.log('y = ', y);
> x = {"A": 1, "B": 2} 
> y = {"A": 1} 

如果x.B存在,现在我想将y.B设置为x.B。如果x.C存在,我想将y.C设置为x.C

我可以使用一个操作符来实现这个吗?目前我这样做,但它似乎很笨拙:

if (x.hasOwnProperty('B') && x.B !== null) {
y.B = x.B;
}
if (x.hasOwnProperty('C') && x.C !== null) {
y.C = x.C;
}

在大多数情况下,您的代码相当于

y.B = x.B ?? y.B;
y.C = x.C ?? y.C;

(除非x原型有B或者x.B是undefined)

不完全确定你想做什么,但也许这是可选链接操作符(?.)的情况。

可以这样使用:

if (x?.B !== null) {
y.B = x.B;
}
if (x?.C !== null) {
y.C = x.C;
}

该操作符在访问该属性之前检查该属性是否存在。如果抛出错误(而不是抛出错误),则访问x.C并将表达式求值为undefined

相关内容

  • 没有找到相关文章

最新更新