microsoft / microsoft/TypeScript

rewriteRelativeImportExtensions: tsc doesn't rewrite extensions in emitted declaration files

Ouverte
#61,037 9 commentaires 3 réactions 0 personnes assignées Voir sur GitHub

Personne n'a encore pris cette issue.

Experience Enhancement Help Wanted Suggestion
Langage dominant
Go
Étoiles
111k
Forks
14.3k
Merge moyen
2 j 4 h
PR mergées (30 j)
132

Description

### 🔎 Search Terms

"rewriteRelativeImportExtensions", "extensions", "declaration", ".d.ts"

### 🕗 Version & Regression Information

- This is the behavior in every version I tried (even in the next 5.8.0), and I reviewed the FAQ for entries about "rewriteRelativeImportExtensions"

### ⏯ Playground Link

_No response_

### 💻 Code

In an index.ts file:
```ts
export * from './file.ts';
```
then build it with `tsc` and `"rewriteRelativeImportExtensions": true` & `"declaration": true` in the `compilerOptions` of your `tsconfig.json`

### 🙁 Actual behavior

Built files content:
In the JS file, `index.js`, the extension is rewritten to .js:
```ts
export * from './file.js';
```
In the declaration file, `index.d.ts`, the extension is not rewritten to .js:
```ts
export * from './file.ts';
```

### 🙂 Expected behavior

In the declaration file, the extension should be rewritten to .js too:
```ts
export * from './file.js';
```

### Additional information about the issue

It occurs in the current TS 5.7.3 and in the next version (5.8.0-dev.20250123 at this time). Even if TS correctly interprets `.d.ts` files with `.ts` extensions in `import`/`export`, it's not the case of the IDE I use, PhpStorm. It can't provide a real code assistance with these declaration files.
In fact, I don't really know if it's a feature, a bug or an oversight in `tsc`, or if `rewriteRelativeImportExtensions` is just too new to be completely supported by all IDEs! Let me know!

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

Reproduisez le problème avec index.ts et un tsconfig.json activant rewriteRelativeImportExtensions et declaration, puis suivez le chemin d'émission des déclarations de tsc pour cette option. Le travail est considéré comme terminé lorsque le .d.ts émis réécrit './file.ts' en './file.js', de manière cohérente avec la sortie JavaScript, avec une couverture du cas signalé.

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

Évaluation

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

Recevez les nouvelles issues par e-mail

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