Избегайте инициализации каждой переменной внутри конструктора класса

#javascript #typescript #class #constructor

Вопрос:

У меня есть много моделей ( которые являются классами javascript), содержащих имена для моей базы данных, а также ее типы. Есть ли способ создать нового пользователя без необходимости вызывать все эти атрибуты внутри конструктора ?

 class User {
    name: string;
    email: string;
    password: string;

    constructor(values: User) {
        this.name = values.name;
        this.email = values.email;
        this.password = values.password;

        // I don't want to call this.name, this.email, ... Since this User model is relatively small, but I have models with hundreds of attributes
    }
}
 

Ответ №1:

В typescript вы можете создавать поля классов в списке аргументов конструктора, например:

 class User {
    // nothing here :)
    constructor(private name: string, private email: string, private password: string) {
        // empty :)
    }
}
 

Если вы укажете модификатор доступа, вы автоматически получите объявление и назначение.