microsoft / microsoft/TypeScript
Generics in union should be inferred as `never` when possible
Nessuno ha ancora preso questa issue.
- Lingua principale
- Go
- Stelle
- 111k
- Fork
- 14.3k
- Merge medio
- 2g 4h
- PR unite (30g)
- 132
Descrizione
🔎 Search Terms
generics, inference, union, never
🕗 Version & Regression Information
This is the behavior in every version I tried, and I reviewed the FAQ for entries about union and never.
⏯ Playground Link
💻 Code
const f = <T,>(x: T | string, y: T | number) => y
f('a', 1) satisfies number // T is "a" now
const g = <T extends undefined>(x: T | number) => x
g(1) satisfies number // T is undefined now
🙁 Actual behavior
T is not never.
🙂 Expected behavior
T should be inferred as never, because it can be anything.
Additional information about the issue
This may be related to #42491.
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 con la riproduzione collegata in TypeScript Playground e confronta il suo comportamento di inferenza dei generici con quello dell’issue correlata #42491. Il lavoro è completo quando T viene inferito come never in entrambi gli esempi e i controlli satisfies producono i risultati attesi.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Valutazione
- Stack tecnologico
- typescript
- Ambito
- compilers
- Tipo di issue
- Bug
- Difficoltà
- 5/5
- Tempo stimato
- Più di una settimana
- Stato di attività
- Ferma
- Chiarezza
- Abbastanza chiara
- Idoneità per principianti
- 35/100