Есть ли способ пропустить проверку типов для более быстрой компиляции TypeScript? - PullRequest
0 голосов
/ 03 февраля 2019

При использовании babel-preset-typcript проверка типов пропускается.Это почти наверняка быстрее и менее ресурсоемко, чем при использовании обычного tsc, потому что нет никаких накладных расходов при проверке типов, а шаги привязки и проверки пропускаются полностью (это просто анализ и извлечение типов).

Я знаю, что именното же самое не доступно с API компилятора TS , так как babel полностью использует другой парсер (Bblyon).Но есть ли способ сделать что-то подобное и пропустить привязку и проверку для более быстрой компиляции?Похоже, ts.createProgram автоматически включает проверку типов.

1 Ответ

0 голосов
/ 03 февраля 2019

Интересующая вас функция: ts.transpileModule ( Источник / Документация ).

Например:

const compilerOptions: ts.CompilerOptions = {
    // you'll probably want to load this from a tsconfig.json
    target: ts.ScriptTarget.ES5,
    module: ts.ModuleKind.CommonJS
};
const result = ts.transpileModule("const t = 5;", {
    compilerOptions,
    reportDiagnostics: false
});

console.log(result.outputText); // "var t = 5;"

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

Как вы могли заметить, ts.transpileModule будет по-прежнемусоздать программу, но она все равно должна быть намного быстрее, чем обычный процесс, потому что она излучает со знанием только одного файла за раз.Чтобы пропустить создание программы, я считаю, что необходимо использовать внутреннюю функцию emitFiles ... хотя для этого потребуется реализация внутреннего типа EmitResolver для поддержки сценария, в котором я не уверенможно сделать правильно без привязки (я не знаю много об этом, поэтому не могу сказать наверняка).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...