Выбор ответа Senior Классы и интерфейсы обновлено
private или #private
Вопрос
Чем private secret отличается от #secret в классе TypeScript?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: private есть только при компиляции, а secret скрыт и в рантайме. private это модификатор TS: после стирания типов поле самое обычное, его видно в JSON.stringify, Object.keys и через скобочную нотацию (TS её даже разрешает как лазейку). field это стандартные приватные поля ES2022 с жёсткой инкапсуляцией…
Варианты ответа
- Ничем: это два синтаксиса одного и того же приватного поля класса
#secretпроверяется только компилятором, а в JS поле обычноеprivateесть только при компиляции, а#secretскрыт и в рантаймеправильный ответprivateнельзя использовать с наследованием, а#secretможно
Разбор
private это модификатор TS: после стирания типов поле самое обычное, его видно в JSON.stringify, Object.keys и через скобочную нотацию (TS её даже разрешает как лазейку). #field это стандартные приватные поля ES2022 с жёсткой инкапсуляцией в рантайме. Для секретов и библиотек, где важна настоящая инкапсуляция, выбирают #.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.