microsoft / microsoft/TypeScript
narrowing in switch doesn't work with non-union types
Offen
Dieses Issue hat noch niemand übernommen.
In Discussion
Suggestion
- Vorherrschende Sprache
- Go
- Sterne
- 111k
- Forks
- 14.3k
- Ø Merge
- 1 T. 19 Std.
- Gemergte PRs (30 T.)
- 117
Beschreibung
class A {
readonly kind = 'a';
}
type U = A; // <-- supposed to be a single case union
declare var u: U;
declare function never(never: never): never;
function fn() {
switch (u.kind) {
case 'a': return 1;
default: return never(u); // <-- u expected to be never, actually is A
}
}
Beitragsleitfaden
Erste Schritte
- Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
- Forke das Repository und arbeite in einem Branch.
- Öffne einen Pull Request, der die Issue-Nummer nennt.
Rechercherichtung
Beginne mit der bereitgestellten TypeScript-Reproduktion und untersuche den Typprüfpfad für die auf switch basierende Eingrenzung und Exhaustiveness. Bestätige, ob der default-Zweig u als A statt als never akzeptiert, und füge anschließend einen Regressionstest hinzu oder aktualisiere ihn, der zeigt, dass eine Union mit einem einzigen Fall korrekt eingegrenzt wird.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- typescript
- Bereich
- compilers
- Issue-Typ
- Bug
- Schwierigkeit
- 4/5
- Geschätzter Aufwand
- 3-5 Tage
- Aktivitätsstatus
- Veraltet
- Klarheit
- Größtenteils klar
- Anfängerfreundlichkeit
- 35/100