Как инициализировать / установить значение в конструкторе суперкласса?в машинописи - PullRequest
0 голосов
/ 18 декабря 2018

С учетом этих двух классов:

Пользователь

    export class User {

        constructor(id?: string, userName?: string, fullName?: string,
 email?: string, jobTitle?: string, phoneNumber?: string, roles?: string[]) {
            this.id = id;
            this.userName = userName;
            this.fullName = fullName;
            this.email = email;
            this.jobTitle = jobTitle;
            this.phoneNumber = phoneNumber;
            this.roles = roles;
        }

    }

и UserEdit , что расширяет с Пользователь

import { User } from './user.model';


export class UserEdit extends User {
    constructor(currentPassword?: string, newPassword?: string, confirmPassword?: string) {
        super();

        this.currentPassword = currentPassword;
        this.newPassword = newPassword;
        this.confirmPassword = confirmPassword;
    }

    public currentPassword: string;
    public newPassword: string;
    public confirmPassword: string;

}

Возможно из UserEdit установить email в пустую строку '', из создания нового объекта ?.Например.

let userEdit:UserEdit = new UserEdit()

Ответы [ 2 ]

0 голосов
/ 18 декабря 2018

Спасибо, Simonare, я также нашел другое решение, которое также элегантно, композиция функций .

Вот так.

public user: User = new User('', '', '', '', '', '', ['']);
public userEdit: editUser = new UserEdit('', '', '');
public edit = () => { ...this.user, ...this.userEdit };
0 голосов
/ 18 декабря 2018

вам нужно передать параметры внутри вашего базового класса, используя super(param1, param2, param3, ...)

в вашем случае

super(id, userName, fullName, email, jobTitle, phoneNumber, roles);

super(id, username, fullname, '', jobTitle, phoneNumber, roles);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...