typescript - ¿Hay una manera de copiar un objeto entero a las propiedades de una clase en una sola línea en javascript?
En este momento tengo una clase que se ve así:
class User {
static collection = "users"
public id?: string
public email: string
public name: string
public token: string
public username: string
public image?: string
public bio?: string
public emailVerified?: boolean
public createdAt: Date = new Date()
public updatedAt?: Date
constructor(params: InitParams<User>) {
this.email = params.email
this.name = params.name
this.token = params.token
this.username = params.username
this.image = params.image
this.bio = params.bio
this.emailVerified = params.emailVerified
}
}
Ahora InitParams<User> es un tipo sofisticado que coincide con la lista exacta de propiedades de User, sin ningún método que User pueda tener. Así que el tipo garantiza que tiene todas las propiedades necesarias para inicializar User.
Así que quería hacer algo así en el constructor:
constructor(params: InitParams<User>) {
this = { ...params, ...this }
}
Pero TypeScript dice que eso es ilegal y también estoy bastante seguro de que entonces arruinaría la clase de otras maneras. Pero por si acaso, ¿hay alguna manera de hacer esta inicialización en una línea?