У меня есть гипотетический файл Typescript в моем проекте (упрощенный пример).
Utils.ts
import * as HelperFromNodeModules from 'helper-from-node-modules';
class Utils {
static foo() {
return HelperFromNodeModules.parse(...);
}
}
Импорт helper-from-node-modules
состоит из файла Javascript.
хелперов с узлами-modules.js
const dep = require('foo');
function parse(...) {
return bar.map((e) => {...});
}
А из @types/helper-from-node-modules
index.d.ts :
export function parse(...);
В tsconfig.json
среди прочего содержится следующее:
{
...
"target": "es5",
"lib": ["es2015.collection","es6", "dom"],
"sourceMap": true,
"allowJs": true,
...
}
Так что моя проблема в том, что выходной файл компилятора Typescript представляет собой гигантскую конкатенацию моего скомпилированного исходного кода плюс все приличия. Поскольку helper-from-node-modules
всегда был файлом .js , компилятор, кажется, просто добавляет его содержимое в выходной файл. Таким образом, несмотря на "target": "es5"
, выходной файл по-прежнему содержит es6 артефактов, таких как const
и (e) => {...}
, что приводит к ошибкам с вещами позже, которые строго ожидают es5 javascript.
Есть ли способ заставить компилятор / транспортер Typescript выводить es5 также на зависимости javascript?
Контекст, если вам важно:
Я совершил ужасную ошибку, используя react-create-app-typescript
и react-scripts-ts
в качестве шаблона для моего приложения React. Встроенный стек веб-пакетов очень очень уверен в том, откуда должен исходить код, и что скомпилированный источник должен быть es5 . Упакованный минификатор / увеличитель завершится сбоем, если попытаться минимизировать любые es6 артефактов. Я знаю, что могу запустить npm run-script eject
и изменить различные конфигурационные скрипты, но я стараюсь избежать этого беспорядка. Мне бы очень хотелось, чтобы исходный код компилировался в es6 , а не связывался с их стеком веб-пакетов.