Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

isolatedModules does not generate the same code #60110

Open
Lectem opened this issue Oct 1, 2024 · 0 comments
Open

isolatedModules does not generate the same code #60110

Lectem opened this issue Oct 1, 2024 · 0 comments
Labels
Docs The issue relates to how you learn TypeScript
Milestone

Comments

@Lectem
Copy link

Lectem commented Oct 1, 2024

🔎 Search Terms

isolatedModules
const enum
inlining
generated code

🕗 Version & Regression Information

  • This is the behavior in every version I tried

⏯ Playground Link

https://www.typescriptlang.org/play/?preserveConstEnums=true&module=5&isolatedModules=true&ts=5.7.0-dev.20240930#code/FAYw9gdgzgLgBAUwgVwLZwHJhgZTAQQHcEoxUEBhSWAURXQG9g449yA1AQwBtkEAaZnHwRsACwQAnAPIQEwAL7BlAM2QQQMAJaQ4AEzClyMMVogBzABSxOMBAC5M2PERJlK1GHTQBKRwDcwLT04JhYoQi0YEDE4axhbBB9QoRYQTigEJ1wCYiMPaC96ADo2BC5eB1SWOHBoMG4EYu4wKwByMoq+Np8AbmqWACNJBE4Aa36a2oysrBzXfKpC71RikXEpWSqptOoGppb29ZNNuR7JneHRiaElBSA

💻 Code

const enum NotSoAwesomeConstEnum {
  SomeValue,
  AnotherOne
}


function dosomething(state: NotSoAwesomeConstEnum): void {
  switch (state) {
    case NotSoAwesomeConstEnum.SomeValue:
      console.log('SomeValue');
      break;
    case NotSoAwesomeConstEnum.AnotherOne:
      console.log('AnotherOne');
      break;
  }
}

🙁 Actual behavior

The emitted code is not the same when using isolatedModules.

🙂 Expected behavior

The emitted code should be the same when using isolatedModules as it is described as nothing else but a check

Setting the isolatedModules flag tells TypeScript to warn you if you write certain code that can’t be correctly interpreted by a single-file transpilation process.

const enum values should be inlined even when using this flag. (Or an error should be emitted).

Additional information about the issue

From the documentation:

It does not change the behavior of your code, or otherwise change the behavior of TypeScript’s checking and emitting process.

Which is not true, at least for const enum as this prevents inlining.
See the playground link and #16671 (comment)

@RyanCavanaugh RyanCavanaugh added the Docs The issue relates to how you learn TypeScript label Oct 1, 2024
@RyanCavanaugh RyanCavanaugh added this to the Backlog milestone Oct 1, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Docs The issue relates to how you learn TypeScript
Projects
None yet
Development

No branches or pull requests

2 participants