Выбор ответа 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.

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

  1. Дженерики, условные и mapped-типы, которые Node не умеет стирать
  2. enum, namespace с кодом и parameter properties в конструктореправильный ответ
  3. import type, satisfies и утверждения типов через as
  4. Интерфейсы, декларации .d.ts и перегрузки функций

Разбор

Type stripping удаляет аннотации, заменяя их пробелами, и не генерирует код. enum, namespace с значениями и parameter properties требуют генерации JS, поэтому в режиме стирания не работают, и флаг ловит их на этапе tsc. Дженерики, интерфейсы, import type и satisfies стираются без следа. Важно: Node при этом не проверяет типы, проверка остаётся за tsc --noEmit в CI.

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

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

Термины по теме