`isolatedModules` does not generate the same code

Ouverte
#60,110 0 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

Personne n'a encore pris cette issue.

Évaluation

Difficulté
4/5
Temps estimé
3-5 jours
Accessibilité débutants
45/100
Type d'issue
Bug
Clarté
Plutôt claire
Activité
À l'abandon
Stack technique
typescript
Domaine
compilers

Piste de recherche

Commencez par le TypeScript Playground lié et comparez le code émis avec et sans isolatedModules pour l’exemple de const enum. Suivez le chemin du compilateur responsable de la gestion de const enum et déterminez si les valeurs doivent être intégrées inline ou si une erreur doit être signalée ; le travail est terminé lorsque la sortie correspond ou qu’un diagnostic clair est disponible.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Description

Docs
🔎 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 https://github.com/microsoft/TypeScript/issues/16671#issuecomment-1686858424

Langage dominant
Go
Étoiles
111k
Forks
14.4k
Merge moyen
1 j 19 h
PR mergées (30 j)
117

Guide de contribution

Ouvrir le guide de contribution

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Autres issues de microsoft/TypeScript

Toutes les issues de microsoft/TypeScript

Issues similaires

Plus d'issues Go

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.