javascript Typescript -对象的Conditional属性

3df52oht  于 2022-12-10  发布在  Java
关注(0)|答案(3)|浏览(178)

我希望以下对象具有条件属性:

{ name: this.username, DOB: new Date(this.inputDate)}

比如说,如果用户已经指定了他们的性别,我希望添加第三个属性gender。下面的正确语法是什么?

{ name: this.username, DOB: new Date(this.inputDate), if(this.userGender) gender: this.userGender}

附言:如果gender属性没有值,我希望在我的对象中有它。那么,我如何才能只在满足条件的情况下创建该属性呢?

2ul0zpep

2ul0zpep1#

理想情况下,在声明对象之后,只需添加适当的属性作为第二个操作。

const myObj = {
    name: this.username,
    DOB: new Date(this.inputDate),
}

if(this.userGender) myObj.gender = this.userGender;

然而,有时候声明一个“可选”属性与其余属性内联是很好的,在这种情况下,你可以使用对象扩散来获得你想要的效果:

const myObj = {
    name: this.username,
    DOB: new Date(this.inputDate),

    ...this.userGender
        ? { gender: this.userGender }
        : {}
}
cedebl8k

cedebl8k2#

它也可以这样做,更干净和可读。

const myObj = {
    name: this.username,
    DOB: new Date(this.inputDate),
    ...(this.userGender && { gender : this.userGender })
}
km0tfn4u

km0tfn4u3#

试试这个

let userObj = { name: this.username, DOB: new Date(this.inputDate) }
if(this.userGender) 
    userObj[:gender] = this.userGender;

相关问题