- 
                Notifications
    You must be signed in to change notification settings 
- Fork 13.1k
Closed
Labels
Fix AvailableA PR has been opened for this issueA PR has been opened for this issueNeeds InvestigationThis issue needs a team member to investigate its status.This issue needs a team member to investigate its status.
Milestone
Description
Bug Report
π Search Terms
typeof import
import esm type from commonjs module
node12 nodenext
π Version & Regression Information
- I was unable to test this on prior versions because "module": "node12"only works intypescript@next
β― Playground Link
I was unable to find a way to emulate "type": "commonjs" in package.json on typescript playground
here is a repo that can be used to reproduce this error
https://github.com/nstringham/min-to-reproduce-typescript-import-problem
π» Code
{
  "compilerOptions": {
    "module": "nodenext"
  }
}export type Color = "red" | "green" | "blue";
export function printColor(color: Color): void;import type { Color } from "dependency";
const myColor: Color = "blue";
const myOtherColor: import("dependency").Color = "red";
async function main() {
  const { printColor } = await import("dependency");
  printColor(myColor);
  printColor(myOtherColor);
}
main();π Actual behavior
code compiles correctly but displays the following error
index.ts:1:28 - error TS1471: Module 'dependency' cannot be imported using this construct. The specifier only resolves to an ES module, which cannot be imported synchronously. Use dynamic import instead.
1 import type { Color } from "dependency";
                             ~~~~~~~~~~~~
index.ts:5:28 - error TS1471: Module 'dependency' cannot be imported using this construct. The specifier only resolves to an ES module, which cannot be imported synchronously. Use dynamic import instead.
5 const myOtherColor: import("dependency").Color = "red";
                             ~~~~~~~~~~~~
π Expected behavior
code compiles correctly with no errors
βͺοΈ Workaround
because typescript compiles correctly despite errors this error can be ignored with // @ts-ignore
Metadata
Metadata
Assignees
Labels
Fix AvailableA PR has been opened for this issueA PR has been opened for this issueNeeds InvestigationThis issue needs a team member to investigate its status.This issue needs a team member to investigate its status.