microsoft / microsoft/TypeScript
Clean up syntax for importing and using nested type declarations
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
- import
- import equals
- nested import
Suggestion
The current syntax for importing nested modules is confusing. For example, to specifically use a single property from an interface I would need to do something like this:
// interface.ts
interface Example {
Foo: string
}
// file.ts
import { Example } from 'interface.ts';
import Foo = Example.Foo // this is weird, as I'm not actually importing any resource here
From what I understand, import is not importing anything here. It's confusing and looks like it's doing something totally different at first glance. In this case, I could also use type Bind = interfaces.Bind, but I don't want to create a new resource.
A much nicer syntax would be adding a use or take keyword, or adding support for importing nested modules
Use Cases
This suggestion is just for readability and developer experience.
Examples
Importing nested modules with use or take
// interface.ts
interface Example {
Foo: string
}
// file.ts
import { Example } from 'interface.ts';
take { Foo } from Example;
importing nested interface/namespace values:
// interface.ts
interface Example {
Foo: string
}
// file.ts
import { Example: { Foo } } from 'interface.ts';
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, etc.)
- This feature would agree with the rest of TypeScript's Design Goals.
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
Examinez les exemples de déclarations imbriquées dans interface.ts et file.ts, y compris la forme import-equals existante et les formes use, take et nested-import proposées. Déterminez la syntaxe prévue et le comportement de la vérification des types avant d’envisager l’implémentation ; pour considérer le travail comme terminé, il faudrait un design convenu ainsi que des tests du compilateur et de régression, dont aucun n’est identifié dans l’issue.
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é
- 5/5
- Temps estimé
- Plus d'une semaine
- Activité
- À l'abandon
- Clarté
- À clarifier
- Accessibilité débutants
- 25/100