Как инициализировать / установить значение в конструкторе суперкласса? в машинописном тексте

Учитывая эти два класса:

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

    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()

Зачем использовать классы вместо интерфейсов?

Adrian Brand 17.12.2018 23:19
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
1
796
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

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

в твоем случае

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

super(id, username, fullname, '', jobTitle, phoneNumber, roles);

я хочу создать объект new UserEdit() и из него установить в электронном письме пустую строку ''.

Yoarthur 17.12.2018 23:27

хорошо, используйте super, чтобы установить или отключить их. мой ответ имеет отношение к тому, что вам нужно. проверьте использование супер. super инициализирует базовый конструктор. так что вам нужно называть это, как указано выше

Derviş Kayımbaşıoğlu 17.12.2018 23:28

Кроме того, ваш класс User не имеет преимущества в виде класса вместо интерфейса. Если бы это был интерфейс, вы могли бы просто реализовать его в UserEdit (или Partial<User> для дополнительных полей), а затем нормально взаимодействовать с полями.

joh04667 17.12.2018 23:39

да, но я наследую проект. Итак, как сказали битлз, если это сработает, пусть будет.

Yoarthur 17.12.2018 23:44

Если вы не знаете, что делаете, вы можете петь только для кого-то другого. С Уважением

Derviş Kayımbaşıoğlu 17.12.2018 23:46

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

Нравится.

public user: User = new User('', '', '', '', '', '', ['']);
public userEdit: editUser = new UserEdit('', '', '');
public edit = () => { ...this.user, ...this.userEdit };

Другие вопросы по теме