Я хотел бы начать использовать Typescript в существующем проекте Babel. Моя цель — иметь возможность добавлять машинописный текст в процесс сборки с минимальными изменениями существующего кода. По этой причине я решил связать машинописный текст (нацеленный на ES2015) и Babel. Я думал, что с поддержкой js-файлов в ts1.8 наконец-то смогу сохранить все как есть, а затем конвертировать файлы один за другим. Но вот первая проблема, с которой я столкнулся:error TS8003: 'export=' can only be used in a .ts file.
Typescript не поддерживает синтаксис экспорта es2015:export default 'foo';
.
Мы используем синтаксис es2015 для импорта/экспорта, и я не хочу менять его для старого синтаксиса commonJS. Есть ли способ заставить машинописный текст разрешить это?
Вот минимальный пример, демонстрирующий проблему:
hello.js
export default (name) => console.log(`Hello ${name}`);
tsconfig.json
{
"version": "1.8",
"compilerOptions": {
"module": "es2015",
"allowJs": true,
"target": "es2015"
}
}
командная строка (используя typescript 1.8)
tsc --outDir ../out
результат
hello.js(1,1): error TS8003: 'export=' can only be used in a .ts file.
export default 'foo';
для экспорта. Затем вам нужно импортировать с соответствующим синтаксисом:import foo from "./jsfile";
- person Zorgatone   schedule 01.02.2016error TS8003: 'export=' can only be used in a .ts file.
- person Tom Esterez   schedule 01.02.2016export= isn't allowed
, что означает, что есть еще один файл, все еще использующий синтаксис commonJS. Это не означает, что вы не можете использовать синтаксис ES6. - person Zorgatone   schedule 01.02.2016export=
для этого кода в файле js:function MyFunction() {} export default MyFunction
, но не дляexport default function MyFunction() {}
. - person David Sherret   schedule 01.02.2016"module": "commonjs"
на"module": "es2015"
- person Zorgatone   schedule 01.02.2016hello.js
- person Zorgatone   schedule 01.02.2016export default
, но что вы вложили? Моя цель - сохранитьexport default
в моих исходных файлах js. - person Tom Esterez   schedule 01.02.2016"module": "commonjs"
на"module": "es2015"
. У меня не было такой ошибки, как вы сказали. Просто код выводился как CommonJS вместо ES2015. Вы уверены, что ваша ошибка вызвана TypeScript, а не BabelJS? - person Zorgatone   schedule 01.02.2016allowJs
. - person David Sherret   schedule 01.02.2016export default
) также приведет к ошибкеexport =
. Он хочет по-прежнему выводить модули es6, а не commonjs. - person David Sherret   schedule 01.02.2016