microsoft / microsoft/TypeScript

Add a specific error message for disallowed imports in project references?

Ouverte
#43,253 3 commentaires 1 réaction 0 personnes assignées Voir sur GitHub

Personne n'a encore pris cette issue.

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

Description

Suggestion

🔍 Search Terms

project reference back import

✅ Viability 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. library functionality, non-ECMAScript syntax with JavaScript output, new syntax sugar for JS, etc.)
  • This feature would agree with the rest of TypeScript's Design Goals.

⭐ Suggestion

After introducing project references to a monolith repo with many developers, I've sometimes seen confusion over people writing imports from projects in the incorrect direction: e.g. if project B has a tsconfig reference to project A, trying to import from B in A. ♻️

https://github.com/JoshuaKGoldberg/ts-repro-back-reference-import

Here's an example error message that says what's technically wrong but doesn't give much context:

src/a/index.ts:1:19 - error TS6307: File '---/src/b/index.ts' is not listed within the file list of project '---/src/a/tsconfig.json'. Projects must list all files or use an 'include' pattern.

1 import { b } from "../b";
                    ~~~~~~

📃 Motivating Example

Adding a specific error for these incorrect direction ("back") imports might help folks new to project references understand what they're doing wrong:

src/a/index.ts:1:19 - error TS6307: File '---/src/b/index.ts' is not listed within the file list of project '---/src/a/tsconfig.json'. Projects must list all files or use an 'include' pattern.

  File "---/b/index.ts" is included in "---/b/tsconfig.json", but "---/a/tsconfig.json" does not list a reference to "---/b/tsconfig.json".

1 import { b } from "../b";
                    ~~~~~~

💻 Use Cases

https://github.com/JoshuaKGoldberg/ts-repro-back-reference-import

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.

Piste de recherche

Commencez par reproduire l’importation de back-reference dans le dépôt lié ts-repro-back-reference-import et examinez les références de projet tsconfig.json concernées. Comparez le diagnostic TS6307 existant avec le contexte supplémentaire proposé, puis identifiez les emplacements du diagnostic du compilateur TypeScript et des tests qui gèrent l’inclusion des fichiers de projet. C’est terminé lorsque l’importation incorrecte produit un message spécifique et exploitable sans modifier le comportement des références de projet valides.

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

Évaluation

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

Recevez les nouvelles issues par e-mail

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