Выбор ответа Junior Классы и интерфейсы обновлено

Модификатор в параметре конструктора

Вопрос

Что делает public x в параметре конструктора?

class Point {
  constructor(public x: number) {}
}
const p = new Point(1);

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: Объявляет поле класса x и присваивает ему значение аргумента. Это параметр-свойство (parameter property): модификатор public, private, protected или readonly в параметре конструктора объявляет поле и генерирует this.x = x.

Варианты ответа

  1. Создаёт статическое поле Point.x со значением аргумента
  2. Только описывает тип параметра, поле нужно объявить отдельно
  3. Объявляет поле класса x и присваивает ему значение аргументаправильный ответ
  4. Делает параметр x необязательным и публичным для вызова

Разбор

Это параметр-свойство (parameter property): модификатор public, private, protected или readonly в параметре конструктора объявляет поле и генерирует this.x = x. После new Point(1) значение доступно как p.x.

Отдельное объявление не нужно. Необязательность задаётся ?, а статические поля через static. Нюанс: это синтаксис с генерацией кода, его запрещает режим erasableSyntaxOnly.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.