Перейти к содержанию

TypeScript в комментарии JSDoc

Преобразуйте типы функций и интерфейсов TypeScript в комментарии JSDoc, чтобы типы сохранились в обычном JavaScript.

Входные данные
Выходные данные

TypeScript в комментарии JSDoc

Вставьте функцию TypeScript, стрелочную функцию, интерфейс или псевдоним типа, и этот инструмент напишет соответствующий комментарий JSDoc над ней — `@param` для каждого параметра, `@returns` для типа возвращаемого значения и `@typedef` с линиями `@property` для интерфейсов и псевдонимов типов объектной формы. Он предназначен для переноса кода из `.ts` в обычный `.js` без потери информации о типах, которая понадобится редактору или linter, поддерживающему JSDoc.

"Удалять аннотации TypeScript" удаляет синтаксис типов из самой сигнатуры — типы параметров, типы возвращаемых значений, списки параметров обобщений — оставляя корректный JavaScript с той же информацией, теперь находящейся в комментарии; отключите его, чтобы оставить TypeScript без изменений и просто добавить документацию сверху. "Генерировать @typedef для интерфейсов" превращает `interface` или объектный `type` в блок typedef; "Добавлять @template для обобщений" документирует параметры типов вроде `<T>`; "Добавлять @throws из операторов throw" сканирует тело каждой функции на `throw new SomeError(...)` и перечисляет найденные различные типы ошибок. Стиль комментария переключается между традиционным блоком с выровненными звёздочками и более компактным вариантом с открывающейся звёздочкой в одну строку, а ширина строки управляет переносом длинных строк.

Инструмент читает объявления функций верхнего уровня, стрелочные функции, назначенные `const` или `let`, интерфейсы и псевдонимы типов объектной формы — объявления, для которых JSDoc имеет тег. Аннотации типов на локальных переменных внутри тела функции и методы, определённые внутри класса или литерала объекта, остаются как написаны; безопасная переработка каждого типа в файле требует полного компилятора, и этот инструмент остаётся небольшим, быстрым скриптом, работающим в момент остановки набора текста.

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

FAQ

Работает ли он с интерфейсами и функциями?
Да. Интерфейсы и псевдонимы типов объектной формы становятся блоком @typedef с одной линией @property для каждого члена; союзный или примитивный псевдоним типа становится вместо этого однострочным @typedef.
Что происходит с исходными типами TypeScript?
Если "Удалять аннотации TypeScript" включено, синтаксис типов удаляется из кода и существует только в комментарии над ним, оставляя обычный JavaScript. Отключите его, чтобы оставить TypeScript как есть и добавить JSDoc поверх него.
Документирует ли он методы внутри класса?
Нет. Инструмент документирует функции верхнего уровня, стрелочные функции, назначенные const или let, интерфейсы и псевдонимы типов — методы класса и литерала объекта остаются без изменений.
Откуда берутся теги @throws?
Инструмент сканирует тело каждой функции на предмет операторов throw. A throw new SomeError(...) отображается как @throws {SomeError}; bare throw отображается как @throws {Error}.
Загружается ли мой код куда-нибудь?
Нет. Преобразование работает полностью в вашем браузере — ваш код никогда не покидает ваше устройство.