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

private или #private

Вопрос

Чем private secret отличается от #secret в классе TypeScript?

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

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

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

Коротко

Правильный ответ: private есть только при компиляции, а secret скрыт и в рантайме. private это модификатор TS: после стирания типов поле самое обычное, его видно в JSON.stringify, Object.keys и через скобочную нотацию (TS её даже разрешает как лазейку). field это стандартные приватные поля ES2022 с жёсткой инкапсуляцией…

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

  1. Ничем: это два синтаксиса одного и того же приватного поля класса
  2. #secret проверяется только компилятором, а в JS поле обычное
  3. private есть только при компиляции, а #secret скрыт и в рантаймеправильный ответ
  4. private нельзя использовать с наследованием, а #secret можно

Разбор

private это модификатор TS: после стирания типов поле самое обычное, его видно в JSON.stringify, Object.keys и через скобочную нотацию (TS её даже разрешает как лазейку). #field это стандартные приватные поля ES2022 с жёсткой инкапсуляцией в рантайме. Для секретов и библиотек, где важна настоящая инкапсуляция, выбирают #.

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

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