0Pricing
TypeScript Academy · Урок

Стратегия преобразования файл за файлом

Постепенно переименовывайте .js в .ts, ничего не ломая

«Стратегия преобразования файл за файлом» — бесплатный урок TypeScript Academy на CoddyKit. Это урок 3 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения TypeScript Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс TypeScript Academy содержит 4 уроков всего.

Поэтапный подход

Преобразование файл за файлом означает переименование одного файла .js в .ts за раз с исправлением ошибок типов по ходу работы. Это позволяет сохранять успешную компиляцию проекта на каждом этапе.

# Step 1: rename
mv src/utils.js src/utils.ts
# Step 2: fix errors
npx tsc --noEmit
# Step 3: commit and repeat

Выбор места для начала

Начните с конечных модулей — файлов, которые не импортируют другие файлы проекта. Для них сначала не нужно удовлетворять зависимости TypeScript в других модулях.

# Find files with fewest imports from other project files:
grep -r "from './" src --include="*.js" | sort | uniq -c | sort -n
# Convert lowest-count files first

Обработка ошибок неявной типизации

Когда файл JS переименовывается в .ts, параметры без типов становятся ошибками неявного any, если задано noImplicitAny: true. Добавьте явные типы или временно используйте any.

// Before: JS
function process(data) { return data.value; }

// After: TS (add annotation)
function process(data: { value: string }) { return data.value; }
// Or temporarily:
function process(data: any) { return data.value; }

Временное подавление ошибок

Используйте // @ts-ignore в строках, которые трудно исправить, и отмечайте их как TODO, чтобы не забыть о них.

// TODO: type this properly in follow-up PR
// @ts-ignore
const result = complexLegacyFunction(x);

Обновление операторов импорта

Когда файл становится .ts, может потребоваться обновить импорты в модулях, которые его используют. TypeScript автоматически разрешает файлы .ts без расширений в путях импорта.

// No extension needed — TypeScript finds .ts
import { process } from "./utils";

Преобразование сторонних вызовов require

Во время преобразования заменяйте вызовы require CommonJS на синтаксис импорта модулей ES, чтобы он соответствовал разрешению модулей TypeScript.

// Before: CommonJS
const fs = require("fs");
// After: ES module
import fs from "fs";

Постепенное включение строгого режима

Включайте флаги строгого режима поэтапно для каждого файла с помощью комментариев // @ts-strict-ignore в отдельных файлах или переходя на отдельный tsconfig с включённым строгим режимом.

// tsconfig.strict.json — points to converted files only
{
  "extends": "./tsconfig.json",
  "compilerOptions": { "strict": true },
  "include": ["src/converted/**/*"]
}

Отслеживание оставшихся файлов

Ведите список или используйте скрипт, чтобы подсчитывать оставшиеся файлы .js и отслеживать прогресс миграции со временем.

find src -name "*.js" | wc -l   # remaining JS files
find src -name "*.ts" | wc -l   # converted TS files

Избегание больших PR

Преобразуйте по одному файлу на каждый PR, чтобы упростить проверку кода. Большие миграции на TypeScript проще проверять и отменять, если ограничивать их отдельными файлами.

# Good: one file per PR
# Bad: 50 files renamed in one PR

Запуск тестов после каждого преобразования

Запускайте набор тестов после преобразования каждого файла, чтобы обнаруживать регрессии во время выполнения, которые проверка типов TypeScript может не выявить.

npm test
# Ensure all tests pass after each .js → .ts rename

Итоги: стратегия преобразования файл за файлом

Сначала преобразуйте конечные файлы, исправляйте или подавляйте ошибки, сохраняйте успешную компиляцию проекта на каждом этапе, отслеживайте оставшиеся файлы JS и отправляйте по одному файлу на каждый PR, чтобы упростить проверку кода.

Быстрая проверка

Какие файлы следует преобразовать в TypeScript первыми при миграции файл за файлом?

Что вы узнали

Миграция файл за файлом: начните с конечных модулей, переименуйте файл в .ts, исправляйте или подавляйте ошибки, сохраняйте успешную компиляцию проекта и отслеживайте прогресс. Небольшие преобразования в рамках отдельных PR делают миграцию безопасной и удобной для проверки.

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

Урок «Стратегия преобразования файл за файлом» бесплатный?

Да — полный текст урока «Стратегия преобразования файл за файлом» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс TypeScript Academy, подпишись на CoddyKit PRO. Курс TypeScript Academy содержит 4 уроков всего.

Чему я научусь в уроке «Стратегия преобразования файл за файлом»?

Постепенно переименовывайте .js в .ts, ничего не ломая Ты практикуешь TypeScript Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать TypeScript Academy?

Предыдущий опыт не требуется. TypeScript Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 3 из 4.

Сколько времени занимает урок «Стратегия преобразования файл за файлом»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке TypeScript Academy?

Да. Каждый урок TypeScript Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Начало миграции: allowJs и checkJs
  2. Аннотации типов JSDoc как переходный этап
  3. Стратегия преобразования файл за файлом
  4. Работа с нетипизированными сторонними библиотеками
← Назад к TypeScript Academy