现在我有一个看起来像这样的课:
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
}
}
现在InitParams<User>
是一种精美类型,它与用户属性的确切列表匹配,而用户可能没有任何方法。因此,该类型保证了它具有初始化User
的所有必要属性。
所以我想在构造函数中做这样的事情:
constructor(params: InitParams<User>) {
this = { ...params, ...this }
}
但是打字稿说那是非法的,我也很确定那我会以其他方式弄乱班级。但是以防万一,有没有办法在一行中完成此初始化?