microsoft / microsoft/TypeScript
Conflicting definitions for Set constructor causes unexpected default generic in TS 3.5
Nessuno ha ancora preso questa issue.
- Lingua principale
- Go
- Stelle
- 111k
- Fork
- 14.3k
- Merge medio
- 2g 4h
- PR unite (30g)
- 132
Descrizione
TypeScript Version: 3.4.5 vs versions after 3.5
Search Terms: set constructor setconstructor unknown
Code
let s = new Set();
Expected behavior:
In TS 3.4: we expect the default chosen param to give us a Set<{}>.
In TS 3.5: we expect a Set<unknown>.
That change was an intended change in TS 3.5.
Or, if Set has a default generic arg, I expect the same default chosen in 3.4 and 3.5.
Actual behavior:
In TS 3.4, this actually was a Set<any>!
It appears there are multiple overloads of the Set constructor.
lib.es2015.collection.d.ts says:
new <T = any>(values?: ReadonlyArray<T> | null): Set<T>;
while lib.es2105.iterable.d.ts says:
new <T>(iterable?: Iterable<T> | null): Set<T>;
Note that one has T = any and the other doesn't.
So somehow TS 3.4 vs TS 3.5 decided to change whether to obey the any default, I think?
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 confrontando gli overload del costruttore di Set in lib.es2015.collection.d.ts e lib.es2105.iterable.d.ts, quindi riproduci l’esempio fornito di new Set() con TypeScript 3.4.5 e 3.5. Il lavoro è completato quando le dichiarazioni del costruttore e l’inferenza generica corrispondono al comportamento previsto nelle versioni interessate.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Valutazione
- Stack tecnologico
- typescript
- Ambito
- compilers
- Tipo di issue
- Bug
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Stato di attività
- Ferma
- Chiarezza
- Abbastanza chiara
- Idoneità per principianti
- 35/100