Skip to content

[V6] module defaults is not esnextΒ #63330

@regseb

Description

@regseb

πŸ”Ž Search Terms

"module", "default", "esnext", "v6"

πŸ•— Version & Regression Information

This changed between versions V5 and V6

⏯ Playground Link

This isn't an issue in Playground, because you're required to enter a value for the module.

https://www.typescriptlang.org/play/?#code/FASwtgDg9gTgLgAgGZSsmUwIEQDoD0KUuAVgM5QB22CA7iHABYIDeCcAnhAKYBcO5KjQC+AbmDAAxlQoAbbrllQA5gAoiASlFA

πŸ’» Code

  • package.json

    {
      "name": "testcase",
      "version": "1.0.0",
      "type": "module",
      "dependencies": {
        "typescript": "6.0.2"
      }
    }
  • index.ts

    import foo from "./foo.json" with { type: "json" };
    
    console.log(foo);
  1. npm install
  2. npc tsc index.ts

πŸ™ Actual behavior

index.ts:1:30 - error TS2823: Import attributes are only supported when the '--module' option is set to 'esnext', 'node18', 'node20', 'nodenext', or 'preserve'.

1 import foo from "./foo.json" with { type: "json" };
                               ~~~~~~~~~~~~~~~~~~~~~

πŸ™‚ Expected behavior

No error because module defaults to esnext.

Additional information about the issue

In Announcing TypeScript 6.0, it says module defaults to esnext: Similarly, the new default module is esnext, acknowledging that ESM is now the dominant module format.

But in TSConfig Reference, it's CommonJS if target is ES5; ES6/ES2015 otherwise.

In the code, I don't think the default value is esnext. Otherwise, we wouldn't be getting the TS2823 error.

Metadata

Metadata

Labels

DocsThe issue relates to how you learn TypeScript

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions