Перейти к основному содержимому
Tooletto

Форматировщик TypeScript

Готовый вариант «Форматировщик JavaScript»

Форматируйте TypeScript с полной поддержкой аннотаций типов, дженериков, декораторов и интерфейсов. Использует парсер TypeScript, а не JavaScript, поэтому синтаксис типов распознаётся, а не воспринимается как ошибка.

  • Файлы никогда не покидают ваше устройство
  • Бесплатно, без регистрации
  • Без водяных знаков
  • Работает офлайн после загрузки
Loading tool…

Как пользоваться: форматировщик javascript

  1. 1

    Вставьте код

    JavaScript, TypeScript или JSX.

  2. 2

    Настройте стиль

    Отступы, точки с запятой и предпочитаемый тип кавычек.

  3. 3

    Скопируйте результат

    Отформатировано в точности так, как это сделал бы Prettier в вашем редакторе.

Почему TypeScript нужен собственный парсер, а не использование парсера JavaScript

TypeScript — надмножество JavaScript, но синтаксис уровня типов, который он добавляет, — интерфейсы, дженерики с ограничениями через `extends`, декораторы, приведения типов через `as` и самостоятельные объявления только типов — не имеет никакого смысла в грамматике обычного JavaScript и заставляет парсер, понимающий только JavaScript, сразу же падать на совершенно валидном TypeScript. Использование выделенного парсера TypeScript вместо попытки заставить парсер JavaScript принимать надмножество собственной грамматики — вот что позволяет файлу, полному дженериков и интерфейсов, форматироваться корректно, а не отклоняться как синтаксическая ошибка в момент, когда в нём используется возможность, которой в самом JavaScript просто нет.

JSX внутри TypeScript отдельно

Файл `.tsx`, сочетающий синтаксис JSX с аннотациями типов TypeScript, по-настоящему неоднозначен для разбора в одном конкретном месте: приведение типа через угловые скобки вроде `<Foo>value` выглядит точно так же, как начало тега JSX-элемента, для парсера, которому не сообщили, какой диалект он читает. Выбор режима разбора TypeScript с поддержкой JSX корректно устраняет эту неоднозначность, поэтому выбор правильного диалекта заранее — вместо расчёта на то, что обычный парсер JavaScript сам во всём разберётся, — особенно важен именно для файлов компонентов, сочетающих оба синтаксиса.

Декораторы — всё ещё развивающаяся часть синтаксиса

Декораторы — аннотации в стиле `@Component`, распространённые в Angular и некоторых бэкенд-фреймворках на TypeScript, — прошли через несколько разных стадий предложений в процессе стандартизации языка, и разные кодовые базы могут ориентироваться на немного разные версии этого синтаксиса в зависимости от того, когда они были написаны и какие опции компилятора используют. Корректный разбор синтаксиса декораторов требует именно парсера, понимающего TypeScript; обычный парсер JavaScript, встретив `@` перед классом или методом, не имеет для этого определённого значения и отклонит файл целиком.

Часто задаваемые вопросы

Это то же самое, что запустить Prettier локально?

Да — это сам Prettier, только работающий в вашем браузере, а не в Node. С теми же настройками вы получите результат, побайтово идентичный `npx prettier` на том же файле.

Почему бы не использовать более простой форматировщик?

Потому что наивные форматировщики ломают реальный код. Фигурные скобки внутри шаблонных строк и регулярных выражений, JSX и автоматическая расстановка точек с запятой — всё это требует настоящего разбора языка. Форматировщик, который незаметно портит один файл из пятидесяти, хуже, чем его отсутствие.

Работает ли с TypeScript и JSX?

Да. Аннотации типов, дженерики, декораторы и JSX — всё это разбирается корректно. Обратите внимание: инструмент только форматирует, не проверяет типы и не компилирует код.

Почему форматирование не удалось?

В коде есть синтаксическая ошибка — прежде чем что-то вывести, Prettier должен разобрать код. Сообщение об ошибке содержит строку и столбец первой проблемы, чего обычно достаточно, чтобы её найти.

Мой код отправляется на сервер?

Нет. Prettier загружается в ваш браузер и работает там же. Проприетарный код никогда не покидает ваш компьютер, чего нельзя сказать о большинстве онлайн-форматировщиков.