Инициализатор объекта с подсказкой типа в родительском конструкторе - PullRequest
0 голосов
/ 14 апреля 2020

Возможно ли иметь инициализатор объекта с подсказкой типа внутри конструктора родительского класса? Пример:

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, здесь не могут использоваться дженерики.

...