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

Где можно присвоить readonly

Вопрос

Какая строка не скомпилируется?

class Order {
  readonly id: number = 0;          // A
  constructor(id: number) {
    this.id = id;                   // B
  }
  reset() {
    this.id = 0;                    // C
  }
}

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

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

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

Коротко

Правильный ответ: C. Поле readonly можно присвоить при объявлении и внутри конструктора (A и B).

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

  1. Cправильный ответ
  2. Все компилируются
  3. A
  4. B

Разбор

Поле readonly можно присвоить при объявлении и внутри конструктора (A и B). В любом другом методе, как в C, присваивание запрещено.

Ограничение действует только при компиляции. В рантайме readonly поле обычное, и через as any его можно перезаписать.

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

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