Возможно ли иметь инициализатор объекта с подсказкой типа внутри конструктора родительского класса? Пример:
class Model {
modelField: string;
constructor(initializer: SomeSpecialType){
Object.assign(this, initializer);
}
}
class User extends Model{
email: string;
}
const user = new User({
email: '...' // only get type hints for the email property
})
Я знаю, что это возможно, используя метод stati c:
class Model{
someField: string;
static new<T extends Model>(this: new() => T, data: Omit<T, keyof Model>) {
return Object.assign(new this, data);
}
}
const user = User.new({
email: 'some email'
})
Я пытался использовать те же параметры внутри конструктора, но TS говорит мне, что this
ключевое слово не может использоваться в constructor
, здесь не могут использоваться дженерики.