Microsoft/TypeScript
Auf GitHub ansehen'in' does not remove undefined from indexed value (with noUncheckedIndexedAccess)
Open
#61.389 geöffnet am 10. März 2025
Domain: check: Control FlowHelp WantedPossible Improvement
Repository-Metriken
- Stars
- (48.455 Stars)
- PR-Merge-Metriken
- (Durchschn. Merge 6T 17h) (9 gemergte PRs in 30 T)
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