microsoft / microsoft/TypeScript
Use a consistent ordering when writing union types
Nessuno ha ancora preso questa issue.
- Lingua principale
- Go
- Stelle
- 111k
- Fork
- 14.3k
- Merge medio
- 1g 19h
- PR unite (30g)
- 117
Descrizione
In DefinitelyTyped, $ExpectType assertions depend on a type having a consistent string represenation across TypeScript versions.
It looks like the ordering of union types is dependent on some implementation details that change between versions. When we output unions as strings, we should sort them in some consistent way first instead of just using whatever order we happened to use internally.
I would suggest this ordering:
- numeric literals, low to high
- string literals, low to high (by
<) - named types (including type aliases, enum, class and interface names), by name
- function literals: by length (
() => voidbefore(x: number) => void), then by parameter name, then by parameter type - type literals: Sorted smallest to largest (
{ x: number }before{ x: number, y: number }); and type literals of the same size should be alphabetically sorted by property ({ a: number }) before{ b: number }) or by the sorting of values ({ s: "a" }before{ s: "b" })
Of course, another solution would be to try to handle this in $ExpectType by parsing out unions and allowing it if any sorting is valid. But it is strange in TS to see a string literal union displayed in a seemingly random order.
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
Non è indicato alcun file o test. Inizia tracciando il percorso del compilatore che converte i tipi unione in stringhe, quindi confrontalo con le asserzioni $ExpectType di DefinitelyTyped; il lavoro è completo quando i membri dell’unione seguono un ordinamento deterministico tra le diverse versioni di TypeScript.
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
- 35/100