Búsqueda de sitios web

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?