-
Notifications
You must be signed in to change notification settings - Fork 13.2k
Description
TypeScript Version: 4.0.2
Search Terms:
tslib, __importDefault
Code
Using "noEmitHelpers": true and "importHelpers": true does not always include tslib_1 in files, in the last example __importDefault is in the index.js file, without any tslib_1
tsconfig
{
"compileOnSave": false,
"compilerOptions": {
"target": "es5",
"lib": [
"es2017", "dom", "es2018.promise"
],
"module": "commonjs",
"moduleResolution": "node",
"rootDir": "./src",
"declaration": true,
"noLib": false,
"outDir": "target/lib/ts",
"allowSyntheticDefaultImports": true,
"sourceMap": true,
"strictBindCallApply": false,
"esModuleInterop": true,
"strictNullChecks": true,
"noUnusedLocals": true,
"noImplicitAny": true,
"noEmitHelpers": true,
"importHelpers": true
},
"exclude": [
"node_modules",
"target"
]
}TypeScript 3.9.7
// index.ts
export * from "./core/Core";
export {default as HandlerManager} from "./core/HandlerManager";
// becomes
// index.js
Object.defineProperty(exports, "__esModule", { value: true });
var tslib_1 = require("tslib");
tslib_1.__exportStar(require("./core/Core"), exports);
var HandlerManager_1 = require("./core/HandlerManager");
Object.defineProperty(exports, "HandlerManager", { enumerable: true, get: function () { return HandlerManager_1.default; } });Here tslib_1 is only used for exportStar and HandlerManager is not wrapped in __importDefault
TypeScript 4.0.2
// index.ts
export * from "./core/Core";
export {default as HandlerManager} from "./core/HandlerManager";
// becomes
// index.js
Object.defineProperty(exports, "__esModule", { value: true });
// lots of exports, removed because only HandlerManager is relevant
exports.firstExport = ... = exports.HandlerManager = void 0;
var tslib_1 = require("tslib");
tslib_1.__exportStar(require("./core/Core"), exports);
var HandlerManager_1 = require("./core/HandlerManager");
Object.defineProperty(exports, "HandlerManager", { enumerable: true, get: function () { return tslib_1.__importDefault(HandlerManager_1).default; } });Here HandlerManager is imported correct with tslib_1, however if we remove the * import from index.ts, we have
// index.ts
// export * from "./core/Core";
export {default as HandlerManager} from "./core/HandlerManager";
// becomes
// index.js
Object.defineProperty(exports, "__esModule", { value: true });
// lots of exports, removed because only HandlerManager is relevant
exports.firstExport = ... = exports.HandlerManager = void 0;
// export * from "./core/Core";
var HandlerManager_1 = require("./core/HandlerManager");
Object.defineProperty(exports, "HandlerManager", { enumerable: true, get: function () { return __importDefault(HandlerManager_1).default; } });Now we have __importDefault , but tslib is not imported and __importDefault doesn't come from tslib, so __importDefault is undefined
Expected behavior:
tslib should be imported in index.js and importDefault should be called like tslib_1.__importDefault
Actual behavior:
__importDefault without any tslib in index.js
Playground Link: Not possible, requires more than 1 file
Related Issues: No similar issues