typescript 是否有一个类型脚本操作符,将设置一个对象的属性,只有当一些条件得到满足?

sdnqo3pr  于 2023-04-13  发布在  TypeScript
关注(0)|答案(2)|浏览(86)

我有两个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}

现在我想把y.B设为x.B当且仅当x.B存在。我想把y.C设为x.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;
}
blpfk2vs

blpfk2vs1#

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

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

(除非x prototype有B或x.B是undefined

7fyelxc5

7fyelxc52#

不完全确定你想做什么,但也许这是Optional Chaining operator?.)的情况。
它可以这样使用:

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

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

相关问题