microsoft / microsoft/TypeScript
Make ParameterDecorator and the like generic
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
lib Update Request
Missing / Incorrect Definition
ParameterDecorator is currently not generic, it can be attachted to any parameter. However, when a decorator is used for e.g. Dependency Injection purposes, some decorators require the type of the parameter to be consistent with the type of the decorator
Sample Code
E.g. we want this to work
class MyController {
requestThings(@UserId() userId: number): Thing[] { return [] }
}
But this to fail:
class MyController {
requestThings(@UserId() userId: string): Thing[] { return [] }
}
(as userId will be a number, not a string so the injection should ideally not be possible (at compile time)
Currently UserId is done more or less this way:
const UserId = (): ParameterDecorator => (target, key, index) => {
// do stuff
}
while I'd like to add number to ParameterDecorator:
const UserId = (): ParameterDecorator<number> => (target, key, index) => {
// do stuff
}
and I'd like typescript to check this when applying a decorator.
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 par localiser la définition de ParameterDecorator et les vérifications du compilateur pour l’application de décorateurs de paramètres. Comparez les exemples de nombre et de chaîne de caractères de l’issue avec le comportement actuel, puis déterminez comment les types de paramètres génériques doivent être représentés et validés. La tâche est terminée lorsque les applications de décorateurs valides sont acceptées et que les types de paramètres incompatibles sont rejetés avec les tests appropriés.
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é
- Plutôt claire
- Accessibilité débutants
- 30/100