microsoft / microsoft/TypeScript
Renaming a module with a default export should rename default imports which match the filename
Personne n'a encore pris cette issue.
- Langage dominant
- Go
- Étoiles
- 111k
- Forks
- 14.3k
- Merge moyen
- 2 j 4 h
- PR mergées (30 j)
- 132
Description
Search Terms
rename default import
Suggestion
I noticed that recently it became possible to auto-import default exports of modules:
// foo.ts
export default 42;
// bar.ts
const x = 3 + foo
// ^ control-space here will offer to `import foo from './foo'`
This is great and finally makes default exports worth using in TypeScript, so thank you!
Also recently, TypeScript got native support for refactoring names of modules. Now, what would be really awesome is if the rename refactor for modules could take into account default exports, so that when we rename foo.ts to baz.ts this would happen in bar.ts:
-import foo from './foo';
+import baz from './baz';
-const x = 3 + foo;
+const x = 3 + baz;
Basically, try to preserve the cases where the name given to a default import matches that of the module being imported. For cases where a default export is imported with a name not matching the module, it would leave it alone:
-import customName from './foo';
+import customName from './baz';
const x = 3 + customName;
This would really make default exports exceptionally useful in TypeScript, because it would potentially reduce by half the number of refactoring gestures needed to rename a set of terms which are 1-to-1 with modules.
Checklist
My suggestion meets these guidelines:
- This wouldn't be a breaking change in existing TypeScript / JavaScript code
- This wouldn't change the runtime behavior of existing JavaScript code
- This could be implemented without emitting different JS based on the types of the expressions
- This isn't a runtime feature (e.g. new expression-level syntax)
Guide de contribution
Ouvrir le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Piste de recherche
Commencez dans la refactorisation de renommage de modules du module language-service de TypeScript et suivez le comportement existant décrit dans l’issue. Ajoutez une couverture pour les noms d’importations par défaut correspondants et non correspondants ; le travail est terminé lorsque le renommage de foo.ts en baz.ts met à jour une importation correspondante et son utilisation, tout en ne modifiant que le chemin pour customName.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Stack technique
- typescript
- Domaine
- developer-experience, tooling
- Type d'issue
- Fonctionnalité
- Difficulté
- 4/5
- Temps estimé
- 3-5 jours
- Activité
- À l'abandon
- Clarté
- Clairement spécifiée
- Accessibilité débutants
- 45/100