0Pricing
TypeScript Academy · Урок

Создание программы TypeScript с помощью API

Инициализируйте программу компилятора и получите доступ к средству проверки типов

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

Что такое API компилятора?

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

import ts from "typescript";
// Use ts.createProgram to start

Установка пакета typescript

При использовании API компилятора в своих инструментах устанавливайте TypeScript как обычную зависимость, а не только как devDependency.

npm install typescript
# Also install types if needed
npm install --save-dev @types/node

Создание программы

ts.createProgram принимает массив путей к входным файлам и параметры компилятора, а возвращает объект Program.

import ts from "typescript";
const program = ts.createProgram(["src/index.ts"], {
  target: ts.ScriptTarget.ES2020,
  module: ts.ModuleKind.CommonJS,
  strict: true,
});

Доступ к исходным файлам

Используйте program.getSourceFiles(), чтобы получить все файлы компиляции, или getSourceFile для конкретного пути.

const sourceFiles = program.getSourceFiles();
sourceFiles.forEach(sf => {
  if (!sf.isDeclarationFile) {
    console.log(sf.fileName);
  }
});

Получение проверяющего типы компонента

Проверяющий типы компонент — ядро анализа TypeScript. Получите его с помощью program.getTypeChecker().

const checker = program.getTypeChecker();
// Now use checker to resolve types, symbols, etc.

Чтение диагностических сообщений

Получайте диагностические сообщения компилятора — ошибки и предупреждения — для создания собственных инструментов проверки.

const diagnostics = ts.getPreEmitDiagnostics(program);
diagnostics.forEach(d => {
  const msg = ts.flattenDiagnosticMessageText(d.messageText, "
");
  console.log(msg);
});

Чтение tsconfig.json

Используйте ts.readConfigFile и ts.parseJsonConfigFileContent, чтобы загрузить параметры компилятора из файла tsconfig.

const cfgFile = ts.readConfigFile("tsconfig.json", ts.sys.readFile);
const parsed = ts.parseJsonConfigFileContent(
  cfgFile.config,
  ts.sys,
  process.cwd()
);
const program2 = ts.createProgram(parsed.fileNames, parsed.options);

Разрешение символов

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

const sf = program.getSourceFile("src/index.ts")!;
ts.forEachChild(sf, node => {
  if (ts.isVariableStatement(node)) {
    const symbol = checker.getSymbolAtLocation(
      node.declarationList.declarations[0].name
    );
    console.log(symbol?.getName());
  }
});

Генерация выходных данных

Вызовите program.emit(), чтобы создать JavaScript и файлы объявлений, как при запуске tsc.

const emitResult = program.emit();
const exitCode = emitResult.emitSkipped ? 1 : 0;
process.exit(exitCode);

Инкрементальные программы

Используйте ts.createIncrementalProgram для ускорения повторного анализа за счёт повторного использования состояния предыдущей сборки.

// Incremental compilation tracks which files changed
// to avoid reprocessing unchanged files

Итоги: основы API компилятора

API компилятора TypeScript позволяет создавать программы, изучать исходные файлы, запрашивать типы через проверяющий типы компонент и генерировать JavaScript — всё это из кода Node.js.

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

Какой метод возвращает проверяющий типы компонент TypeScript из программы?

Чему Вы научились

Работа с API компилятора TypeScript начинается с ts.createProgram. Из программы можно получить исходные файлы, проверяющий типы компонент, диагностические сообщения и выходные данные — это основа для создания анализаторов кода, генераторов кода и инструментов анализа.

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

Урок «Создание программы TypeScript с помощью API» бесплатный?

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

Чему я научусь в уроке «Создание программы TypeScript с помощью API»?

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

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

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

Сколько времени занимает урок «Создание программы TypeScript с помощью API»?

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

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

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

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

  1. Создание программы TypeScript с помощью API
  2. Обход AST с помощью посетителей
  3. Пользовательские преобразователи и генерация кода
  4. Создание простого инструмента проверки стиля кода
← Назад к TypeScript Academy