Búsqueda de sitios web

javascript - Typescript - Propiedad condicional de un objeto


Tengo el siguiente objeto al que deseo agregarle una propiedad condicional:

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

Digamos, deseo añadir una tercera propiedad llamada género si el usuario ha especificado su género. ¿Cuál sería la sintaxis correcta para lo siguiente:

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

P.D. no deseo tener la propiedad gender en mi objeto si no hay un valor junto con ella. Entonces, ¿cómo puedo crear la propiedad solo si se cumple la condición?

Respuesta #1

Idealmente, simplemente agregarías la propiedad apropiada como una segunda acción después de declarar tu objeto. Así que algo como:

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

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

Sin embargo, a veces es agradable declarar una propiedad "opcional" en línea con el resto de ellas, en cuyo caso puedes usar la propagación de objetos para obtener el efecto que estás buscando:

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

    ...this.userGender && { gender: this.userGender }
}

Respuesta #2

También se puede hacer así, más limpio y legible.

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

Artículos relacionados