microsoft / microsoft/TypeScript
'in' does not remove undefined from indexed value (with noUncheckedIndexedAccess)
Dieses Issue hat noch niemand übernommen.
- Vorherrschende Sprache
- Go
- Sterne
- 111k
- Forks
- 14.3k
- Ø Merge
- 2 T. 4 Std.
- Gemergte PRs (30 T.)
- 132
Beschreibung
🔎 Search Terms
in operator, noUncheckedIndexedAccess
🕗 Version & Regression Information
Tested 5.8.2 and 5.9.0-dev.20250310
⏯ Playground Link
💻 Code
With an array:
const arr: number[] = [1, 2, 3];
const idx: number = 2;
if (idx in arr) {
const x: number = arr[idx];
console.log(x);
}
With a map/object:
const map: Record<string, number> = { a: 1 };
const key: string = "a";
if (key in map) {
const x: number = map[key];
console.log(x);
}
🙁 Actual behavior
Type 'number | undefined' is not assignable to type 'number'.
Type 'undefined' is not assignable to type 'number'.
🙂 Expected behavior
Expected 'in' operator to guarantee that the result of indexing is not undefined in this branch.
Additional information about the issue
No response
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 verknüpften TypeScript Playground-Reproduktion mit noUncheckedIndexedAccess und sowohl dem Array- als auch dem Record-Beispiel. Verfolge, wie der Type Checker den indizierten Zugriff innerhalb der in-Zweige eingrenzt. Fertig ist es, wenn beide Beispiele das Zuweisen der indizierten Werte zu number erlauben, ohne das bestehende Verhalten der Option abzuschwächen.
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