интерфейс, как определить значение по умолчанию - PullRequest
0 голосов
/ 17 октября 2018

Я пытаюсь использовать интерфейсы в своих моделях и создать для них значение по умолчанию.

export interface IPerson {
  id: string;
  name: string;
}

class Person implements IPerson {
   id = '';
   name = 'John';
}

export class Family {
 constructor(public address: string,
             public members: Person[] = [new Person()]) {
 }

Итак, я хочу получить семью, а когда у человека нет имени, онапо умолчанию будет Джоном.

Создает человека с именем = null

как я могу это сделать?

Ответы [ 3 ]

0 голосов
/ 17 октября 2018

Typescript - это инструмент для определения типов значений , а не самих значений .Вы не можете определить значение как интерфейс.

То, что вы можете сделать, это установить значение по умолчанию Person класса:

class Person implements IPerson {
   constructor(private id='', private name= 'John') {
   }
}

Итак, всякий раз, когда вы вызываетеконструктор с new Person() создаст экземпляр со значениями по умолчанию.

0 голосов
/ 17 октября 2018

Type Script следует концепции OOPS.Таким образом, что бы ни делал OOPS language, вы можете делать то же самое.Пока inheritance и variable initialization вызывают беспокойство, я не вижу проблем в вашей реализации.Он должен работать как положено.

Вы можете увидеть рабочую копию здесь - https://stackblitz.com/edit/angular-dbb7ij

Примечание Ваш класс Family имеет 2 parameters.first one - это address, то есть поле required, так как вы не указали значение default.Второй parameter равен Users array и optional, поскольку значение default соответствует массиву 1 записи нового пользователя.

0 голосов
/ 17 октября 2018

Я довольно незнаком с синтаксисом typcript angularJS, но разве вы не должны создавать массив класса Person вместо интерфейса IPerson, например:

export class Family {
 constructor(public address: string,
         public members: Person[] = [new Person()]) {
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...