Начало миграции: allowJs и checkJs
Включите проверку TypeScript в проекте JavaScript
«Начало миграции: allowJs и checkJs» — бесплатный урок TypeScript Academy на CoddyKit. Это урок 1 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения TypeScript Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс TypeScript Academy содержит 4 уроков всего.
Задача миграции
Одномоментная миграция большой кодовой базы на JavaScript в TypeScript сопряжена с риском. Поэтапный путь заключается в постепенном включении TypeScript, файл за файлом, с сохранением работоспособности проекта.
# Key compiler flags for gradual migration:
# allowJs — allow .js files in the compilation
# checkJs — type-check .js files with JSDoc typesШаг 1: Установка TypeScript
Добавьте TypeScript в проект и сначала создайте минимальный tsconfig без строгого режима.
npm install --save-dev typescript
npx tsc --init
# Edit tsconfig.json to set allowJs: trueallowJs: true
При значении allowJs: true TypeScript включает файлы .js в компиляцию. Проверка типов выполняется в мягком режиме — большинство файлов JavaScript скомпилируется без ошибок.
{
"compilerOptions": {
"allowJs": true,
"outDir": "./dist",
"target": "ES2020"
},
"include": ["src"]
}checkJs: true
checkJs: true включает проверку типов в файлах JavaScript с использованием выведенных типов и аннотаций JSDoc. Это позволяет обнаруживать очевидные ошибки без преобразования файлов в .ts.
{
"compilerOptions": {
"allowJs": true,
"checkJs": true
}
}Подавление ошибок с помощью @ts-nocheck
Добавьте // @ts-nocheck в начало проблемных файлов JS, чтобы подавить все ошибки TypeScript, пока вы постепенно выполняете миграцию.
// @ts-nocheck
// This file is not yet migrated — errors suppressed
function legacyUtil(x) { return x.foo.bar; }Подавление ошибок в отдельных строках
Используйте // @ts-ignore, чтобы подавить ошибку в одной строке, не отключая проверку всего файла.
const result = legacyFn(value); // @ts-ignore
// Only this line's error is suppressedmaxNodeModuleJsDepth
По умолчанию TypeScript проверяет файлы JS только в вашем проекте. Задайте maxNodeModuleJsDepth, чтобы управлять глубиной проверки JS в node_modules.
{
"compilerOptions": {
"maxNodeModuleJsDepth": 1 // Check 1 level deep in node_modules
}
}Компиляция JS в папку сборки
При использовании allowJs компилятор TypeScript также может транспилировать файлы JS — это удобно для единообразного применения полифиллов и нацеливания на более старые среды.
tsc
# Compiles both .ts and .js files to dist/Отслеживание прогресса
Отслеживайте прогресс миграции, подсчитывая количество файлов .js и .ts. Поставьте цель по доле файлов, преобразуемых за один спринт.
find src -name "*.ts" | wc -l # TypeScript files
find src -name "*.js" | wc -l # JavaScript files remainingПредотвращение регрессии типов
На начальном этапе оставьте noImplicitAny: false, чтобы существующие файлы JS не заполонили ошибки. Включайте этот параметр после преобразования каждого файла в TypeScript.
{
"compilerOptions": {
"allowJs": true,
"noImplicitAny": false // Relax for JS files; enable per .ts file
}
}Итоги: начало миграции
Начните миграцию с allowJs: true и checkJs: true, используйте @ts-nocheck для ещё не готовых файлов и отслеживайте прогресс по количеству файлов. Такой подход позволяет сохранять успешную компиляцию проекта во время поэтапного преобразования файлов.
Быстрая проверка
Что делает checkJs: true, не требуя преобразования .js в .ts?
Что вы узнали
Начните миграцию с JS на TS с allowJs: true и, при необходимости, checkJs: true. Используйте @ts-nocheck, чтобы отключать сообщения для ещё не готовых файлов, и поэтапно преобразуйте файлы, отслеживая прогресс по их количеству.
Часто задаваемые вопросы
Урок «Начало миграции: allowJs и checkJs» бесплатный?
Да — полный текст урока «Начало миграции: allowJs и checkJs» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс TypeScript Academy, подпишись на CoddyKit PRO. Курс TypeScript Academy содержит 4 уроков всего.
Чему я научусь в уроке «Начало миграции: allowJs и checkJs»?
Включите проверку TypeScript в проекте JavaScript Ты практикуешь TypeScript Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать TypeScript Academy?
Предыдущий опыт не требуется. TypeScript Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 4.
Сколько времени занимает урок «Начало миграции: allowJs и checkJs»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке TypeScript Academy?
Да. Каждый урок TypeScript Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Начало миграции: allowJs и checkJs
- Аннотации типов JSDoc как переходный этап
- Стратегия преобразования файл за файлом
- Работа с нетипизированными сторонними библиотеками