Выбор ответа Senior tsconfig и декларации обновлено
erasableSyntaxOnly и type stripping в Node
Вопрос
Node.js умеет запускать .ts, просто стирая типы (type stripping). Что из этого запрещает флаг erasableSyntaxOnly (TS 5.8), чтобы код был совместим с таким запуском?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: enum, namespace с кодом и parameter properties в конструкторе. Type stripping удаляет аннотации, заменяя их пробелами, и не генерирует код. enum, namespace с значениями и parameter properties требуют генерации JS, поэтому в режиме стирания не работают, и флаг ловит их на этапе tsc.
Варианты ответа
- Дженерики, условные и mapped-типы, которые Node не умеет стирать
enum,namespaceс кодом и parameter properties в конструктореправильный ответimport type,satisfiesи утверждения типов черезas- Интерфейсы, декларации
.d.tsи перегрузки функций
Разбор
Type stripping удаляет аннотации, заменяя их пробелами, и не генерирует код. enum, namespace с значениями и parameter properties требуют генерации JS, поэтому в режиме стирания не работают, и флаг ловит их на этапе tsc. Дженерики, интерфейсы, import type и satisfies стираются без следа. Важно: Node при этом не проверяет типы, проверка остаётся за tsc --noEmit в CI.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.