У меня есть конструктор, который присваивает свойства экземпляру:
class BaseModel {
constructor (args = {}) {
for (let key in args) {
this[key] = args[key]
}
}
}
class User extends BaseModel {
name: string
}
Тогда я могу создать экземпляр, подобный этому:
let user = new User({name: 'Jon'})
Теперь я хотел бы заменить эту базовую функциональность класс-трансформером:
let user = plainToClass(User, {name: 'Jon'})
Моя кодовая база использует первый подход во многих местах, и поэтому я хотел бы реализовать новый путь в конструкторе, чтобы не ломать старый код:
constructor (args = {}) {
let instance = plainToClass(CLASSTYPE, args)
for (let key in Object.keys(instance)) {
this[key] = instance [key]
}
}
Как я могу получить тип класса в конструкторе? Я не могу использовать User, потому что это базовая модель, и другие классы также могут выходить из нее.