Microsoft/TypeScript

undefined is narrowed away incorrectly

Open

#60.106 geöffnet am 30. Sept. 2024

Auf GitHub ansehen
 (3 Kommentare) (0 Reaktionen) (0 zugewiesene Personen)TypeScript (6.726 Forks)batch import
BugDomain: check: Control FlowHelp Wanted

Repository-Metriken

Stars
 (48.455 Stars)
PR-Merge-Metriken
 (Durchschn. Merge 6T 17h) (9 gemergte PRs in 30 T)

Beschreibung

🔎 Search Terms

narrowing undefined, incorrect type narrowing, incorrect if statement narrowing

🕗 Version & Regression Information

  • This changed between versions 5.2 and 5.3

⏯ Playground Link

https://www.typescriptlang.org/play/?#code/CYUwxgNghgTiAEkoGdnwILwN4CgCQAksugBQCUAXPAC4AWAlmoxgNw4C+OOoSciA9gDtk1eAAco1aiBiCqmAD7wAroNAAzeoJDA261WGr0h8KGLEQAngAVJ02eWz566+CQlSZggPwA6IqRk8AC8ofDqUBDIIEG4eHge9oJs8QD0qfAAet74eHDUyrIpnAl2XinpWTnsQA

💻 Code

declare class A {
	IsA(): this is A;
}

declare const pattern: A | undefined;
function applyPattern() {
	if (pattern?.IsA() === false) {
		pattern;
		// ^?
		return;
	}
	pattern;
	// ^?
}

🙁 Actual behavior

pattern is narrowed down to A, removing the undefined

🙂 Expected behavior

pattern should only be narrowed to A | undefined

Additional information about the issue

No response

Contributor Guide