Пользуетесь ли компиляторами в разработке frontend
Что проверяют
Понимаете ли вы, что происходит между вашим файлом и кодом в браузере, и различаете ли роли: транспиляция, проверка типов, сборка, минификация. Вопрос про конвейер целиком, а не про умение назвать одно популярное слово.
Как отвечать
Начните с того, что компиляторы во фронтенде решают три разные задачи:
- синтаксис: современный JavaScript, JSX и TypeScript переводятся в то, что понимают целевые браузеры. Этим заняты Babel, SWC, esbuild и сам
tsc; - типы:
tscпроверяет типы, и ни одна из них в бандл не попадает. Babel и esbuild типы просто срезают, не проверяя, поэтому проверка остаётся отдельным шагом (tsc --noEmit) в сборке или на CI; - сборка и оптимизация: бандлер собирает модули, режет на чанки и выбрасывает неиспользуемый код, минификатор сжимает результат. Удаление мёртвого кода это работа бандлера и минификатора, а не транспилятора.
Отдельно скажите про целевые браузеры: список задаётся конфигом, и от него зависят и объём трансформаций, и набор полифилов. Синтаксис можно перевести, а новый метод вроде Array.prototype.at переводом не получить, ему нужен полифил. Это разные механизмы, и путать их нельзя.
Полезно упомянуть, что препроцессоры стилей и постпроцессоры CSS тоже часть этого конвейера, а библиотеки со стилями в коде бывают двух видов: одни собирают классы на этапе сборки, другие делают это в браузере и стоят времени на каждом рендере.
Где спотыкаются
Говорят, что транспиляция ускоряет код. Обычно наоборот: перевод в старый синтаксис даёт больше байт и дополнительные обёртки, а полифилы утяжеляют бандл. Выигрыш тут не в скорости, а в совместимости и в возможности писать современно.
Второе: считают, что TypeScript что-то гарантирует в рантайме. Типы стираются полностью, и ответ сервера, не совпавший с интерфейсом, уронит приложение ровно так же. Данные с границы приложения нужно валидировать схемой, а не описывать типом.
Третье: рассказывают про конвейер, которого давно нет. Ответ, где сборка держится на старом таск-раннере, а про быстрые компиляторы на другом языке и про современные сборщики не сказано ни слова, читается как опыт, законсервированный несколько лет назад.