Создание программы 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 — локальная установка не требуется.
Все уроки этого курса
- Создание программы TypeScript с помощью API
- Обход AST с помощью посетителей
- Пользовательские преобразователи и генерация кода
- Создание простого инструмента проверки стиля кода