API компилятора TypeScript Как установить Lib? - PullRequest
0 голосов
/ 06 августа 2020

Я использую TypeScript Compiler API , который буквально не имеет документации, так что, надеюсь, кто-нибудь может здесь помочь.

Я пытаюсь добавить в свой компилятор параметр ES2020 lib параметры при запуске ts.createProgram.

Я обнаружил, что "lib" - это string[] , где интерфейс CompilerOptions определен здесь .

Я попробовал установить lib следующим образом:

const program = ts.createProgram(files, {
    target: ts.ScriptTarget.ES2020,
    module: ts.ModuleKind.ES2015,
    lib: ["ES2020"], // <---
    ...
}, host);

Кажется, это не работает, я получаю постоянные ошибки компиляции с указанием Cannot find name 'Array/Number/Math', et c, поэтому очевидно, что библиотека определена неправильно.

Как правильно установить либ ???

Изменить: у меня есть настраиваемый объект хоста со следующей функцией, которая может иметь отношение к вопросу:

getDefaultLibFileName(options) {
    return ts.getDefaultLibFilePath(options);
}

1 Ответ

0 голосов
/ 06 августа 2020

«В моем коде, который компилируется, нет node_modules». Я считаю, что это причина, по которой он не работает. Хост будет искать в папке кода node_modules файл lib.es20202.full.d.ts.

Посмотрите результат ts.getDefaultLibFilePath(options) на хосте, и я думаю, что это будет файл, который не

Чтобы исправить это, убедитесь, что настраиваемый хост предоставляет путь к файлу .d.ts, который существует, или пусть хост предоставит текст файла, который ищет компилятор (это можно сделать в памяти с помощью хоста).

...