beerdy
@beerdy
https://vk.com/beerdy

Что такое alterEgo?

В туторе про героев есть вот такое
constructor(
      public id: number, 
      public name: string,
      public power: string,
      public alterEgo?: string
    ){/*body*/}

Что значит конструкция: public alterEgo?: string
  • Вопрос задан
  • 266 просмотров
Решения вопроса 1
AMar4enko
@AMar4enko
Необязательный параметр
UPD:
Когда вы в конструкторе объявляете параметр public, это свойство автоматом объявляется на классе, но ? относится к параметру, а не к свойству. Поэтому можно сделать так
class Hero {
  ...
  public alterEgo?: string;
  constructor(..., _alterEgo?: string) {
    this.alterEgo = _alterEgo; 
  }
}
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
beerdy
@beerdy Автор вопроса
https://vk.com/beerdy
Александр Марченко Тогда почему если так:
heroes = [
    new Hero(1, 'Windstorm', 'Really Smart',  'optional'),
    new Hero(13, 'Bombasto', 'Super Bad Man' ),
  ];

То работает
А если так:
hero: Hero = {
    id: 1,
    name: 'Windstorm',
    power: 'Black T'
  };

Ругается:
app/app.component.ts(32,3): error TS2322: Type '{ id: number; name: string; power: string; }' is not assignable to type 'Hero'.
  Property 'alterEgo' is missing in type '{ id: number; name: string; power: string; }'


P.S.
И почему так:
heroes[4] = new Hero(1, 'BatCat','Old cat','optional');

Выдает ошибку:
app/app.component.ts(26,9): error TS1005: '=' expected.

Что это за конструкция такая?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы