我有两个Typescript对象x
和y
,定义如下:
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
。