Closed
Description
Bug Report
🔎 Search Terms
TS1323, Common.js, Node, ES Modules
🕗 Version & Regression Information
- This is a crash
💻 Code
My tsconfig.json:
{
"compilerOptions": {
"module": "commonjs",
"importHelpers": true,
"declaration": true,
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"target": "es2020",
"sourceMap": true,
"outDir": "./dist",
"baseUrl": "./",
"incremental": true,
"skipLibCheck": true,
"strict": true,
"moduleResolution": "Node"
}
}
Minimal reproducing code:
import {Color} from '../entities';
class Foo {
d3color = import('d3-color');
}
🙁 Actual behavior
It's transpiled as:
const entities_1 = require("../entities");
class Foo {
constructor() {
this.d3color = Promise.resolve().then(() => require('d3-color'));
}
foo(): Color {
throw new Error()
}
}
🙂 Expected behavior
It's transpiled as:
const entities_1 = require("../entities");
class Foo {
constructor() {
this.d3color = import('d3-color');
}
}
I want at least opt-in for dynamic imports.
Workaround
It won't work for relative path modules.
import type * as d3color from 'd3-color';
const nativeImport = Function('mod', `return import(mod)`);
const d3color: typeof d3color = await nativeImport('d3-color');
Metadata
Metadata
Assignees
Labels
No labels