microsoft / microsoft/TypeScript
Make ParameterDecorator and the like generic
Nessuno ha ancora preso questa issue.
- Lingua principale
- Go
- Stelle
- 111k
- Fork
- 14.3k
- Merge medio
- 2g 4h
- PR unite (30g)
- 132
Descrizione
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.
Guida per i contributori
Apri la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Direzione di ricerca
Inizia individuando la definizione di ParameterDecorator e i controlli del compilatore per l'applicazione dei decoratori dei parametri. Confronta gli esempi di numero e stringa dell'issue con il comportamento attuale, quindi determina come debbano essere rappresentati e convalidati i tipi di parametri generici. Il lavoro è completato quando le applicazioni valide dei decoratori vengono accettate e i tipi di parametri non corrispondenti vengono rifiutati con test appropriati.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Valutazione
- Stack tecnologico
- typescript
- Ambito
- compilers
- Tipo di issue
- Funzionalità
- Difficoltà
- 5/5
- Tempo stimato
- Più di una settimana
- Stato di attività
- Ferma
- Chiarezza
- Abbastanza chiara
- Idoneità per principianti
- 30/100