microsoft / microsoft/TypeScript
Function implementation that returns literal types is not assignable to widened overload
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.8.3
Search Terms: overload widen literal
Code
function foo(x: string): string;
function foo(x: number): number;
function foo(x: string | number) {
if (typeof x === 'string') return 'foo';
return 23;
}
Expected behavior: Implementation satisfies overloads.
Actual behavior: The first overload throws an error that it doesn't match the implementation. Doesn't matter which overload comes first.
If I widen the literals in the implementation by casting them then everything works fine.
Related Issues: https://github.com/microsoft/TypeScript/issues/37393
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 overload nel TypeScript Playground collegato e confrontalo con la versione che usa cast di letterali ampliati. Traccia il controllo di compatibilità dell’implementazione per gli overload; il lavoro è completato quando l’implementazione mostrata soddisfa entrambi gli overload senza cast, con una copertura per questa regressione.
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
- Specificata chiaramente
- Idoneità per principianti
- 35/100