Typescript не добавляет .default к именованным импортам при переносе модулей es6 в commonjs - PullRequest
0 голосов
/ 13 октября 2019

Я работаю над тем, чтобы разрешить файлы .ts в старой кодовой базе .js. База кода .js использует импорт es6 и переносит их с помощью babel в commonjs.

Моя стратегия заключалась в том, чтобы полностью заменить babel на Typescript и позволить TS компилироваться таким образом, чтобы я мог использовать старый код с новым .tsфайлы.

Моя проблема в том, когда я смешиваю импорт по умолчанию и имена. У меня есть много мест в моих старых файлах .js, которые содержат импорт, который выглядит следующим образом:

import Sequelize, { Op, literal } from 'sequelize'
class someModel extends Sequelize.model {
    const someQuery = literal(someValue);
}

Это прекрасно работает с использованием babel. Однако, используя Typescript, он компилируется в следующее:

var __importStar = someTypescriptFunctionForImporting(moduleName){...};
const sequelize_1 = __importStar(require("sequelize"));
class Provider extends sequelize_1.default.Model { // This is fine, works great
   const someQuery = sequelize_1.literal(someValue); // Error - Should be sequelize_1.default.literal
}

Версия Typescript = 3.6.3.

My .tsconfig содержит следующие соответствующие параметры:

"allowJs": true,
"target": "es6",
"esModuleInterop": true,
"module": "commonjs",
"checkJs": false

Чтоя делаю не так? Если моя стратегия с Typescript невозможна из-за того, как мы работали с babel, я мог бы изменить стратегии для переноса файлов .js с файлами babel и .ts с Typescript, но я бы предпочел использовать один транспортер.

Спасибозаранее!

...