Пользователь
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()
вам нужно передать параметры внутри вашего базового класса, используя super(param1, param2, param3, ...)
в твоем случае
super(id, userName, fullName, email, jobTitle, phoneNumber, roles);
super(id, username, fullname, '', jobTitle, phoneNumber, roles);
я хочу создать объект new UserEdit()
и из него установить в электронном письме пустую строку ''.
хорошо, используйте super, чтобы установить или отключить их. мой ответ имеет отношение к тому, что вам нужно. проверьте использование супер. super инициализирует базовый конструктор. так что вам нужно называть это, как указано выше
Кроме того, ваш класс User
не имеет преимущества в виде класса вместо интерфейса. Если бы это был интерфейс, вы могли бы просто реализовать его в UserEdit (или Partial<User>
для дополнительных полей), а затем нормально взаимодействовать с полями.
да, но я наследую проект. Итак, как сказали битлз, если это сработает, пусть будет.
Если вы не знаете, что делаете, вы можете петь только для кого-то другого. С Уважением
Спасибо, Simonare, я также нашел еще одно элегантное решение, функциональная композиция.
Нравится.
public user: User = new User('', '', '', '', '', '', ['']);
public userEdit: editUser = new UserEdit('', '', '');
public edit = () => { ...this.user, ...this.userEdit };
Зачем использовать классы вместо интерфейсов?