microsoft / microsoft/TypeScript
symbolToName does handle exports of namespaces
Personne n'a encore pris cette issue.
- Langage dominant
- Go
- Étoiles
- 111k
- Forks
- 14.4k
- Merge moyen
- 1 j 19 h
- PR mergées (30 j)
- 117
Description
TypeScript Version: 3.2.2
Search Terms: symbolToName, exports, declaration, .d.ts
TypeScript cannot emit the name for a symbol that's declared in an inner namespace but re-exported in the outer namespace. That is, emitting the type name of a symbol does not take an alias created by an export {x as y} statement into account.
This comes up when trying to use the chrome.debugger declaration file. Because debugger is a reserved keyword, the .d.ts is defined using a fake, unexported inner namespace called _debugger, and re-exports it using export {_debugger as debugger};. TypeScript then cannot produce .d.ts files when trying to generate the name for a symbol.
Code
// decl.d.ts
declare module chrome {
namespace _debugger {
export class Foo {}
}
export function getFoo(): debugger.Foo;
export {_debugger as debugger};
}
// user.ts
export const x = chrome.getFoo();
Run tsc --declaration.
Expected behavior:
// user.d.ts
export declare const x: chrome.debugger.Foo;
Actual behavior:
test.ts:1:14 - error TS4025: Exported variable 'x' has or is using private name '_debugger.Foo'.
1 export const x = chrome.getFoo();
~
Playground Link: n/a
Related Issues:
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
Reproduisez le problème avec decl.d.ts et user.ts en exécutant tsc --declaration, puis suivez le traitement de symbolToName par le compilateur pour l’espace de noms _debugger réexporté. Comparez la déclaration générée avec le nom attendu chrome.debugger.Foo et utilisez, si elles sont disponibles, les tests existants du compilateur autour de l’émission de déclarations pour vérifier le fix.
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é
- À l'abandon
- Clarté
- Clairement spécifiée
- Accessibilité débutants
- 45/100