microsoft / microsoft/TypeScript
Assign a known symbol to a constant should retain type information
Nessuno ha ancora preso questa issue.
- Lingua principale
- Go
- Stelle
- 111k
- Fork
- 14.3k
- Merge medio
- 1g 19h
- PR unite (30g)
- 117
Descrizione
Search Terms
Suggestion
Assigning a known symbol constant to another constant should retain type information.
const foo = Symbol() // known symbol
const bar = foo // expecting 'typeof foo' but received 'symbol'
interface UseFoo {
[foo]: 'value'
}
// This should work
const useBar: UseFoo = {
[bar]: 'value'
}
Use Cases
Creating aliases of symbol constants without losing type information.
Examples
Symbol.iterator alias
const { iterator } = Symbol
const iterable: Iterable<number> = {
* [iterator] () {
yield * [0, 1, 2, 3]
}
}
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. new expression-level syntax)
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 riproducendo l’esempio di alias di simbolo foo/bar e l’esempio di destrutturazione di Symbol.iterator in TypeScript. Traccia come il compilatore inferisce i tipi di questi alias e come vengono verificate le chiavi di proprietà calcolate; il lavoro è completo quando entrambi gli esempi mantengono il tipo di simbolo noto senza modificare il JavaScript emesso.
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
- Specificata chiaramente
- Idoneità per principianti
- 35/100