Closed
Description
TypeScript Version: 3.9.7
Search Terms:
type narrowing not working inside array forEach callback
Code
type Observer = {next:()=>void}
let observer: Observer|undefined
const value = {}
if (observer) {
Object.keys(value).forEach((name) => {
observer.next();
});
}
Expected behavior: No error, narrows type
Actual behavior: Error, doesn't narrow type
Work arounds
- enumerate the array even if i don't want to do any work (downside is its not performant)
- check if
observer
is defined multiple times (downside is TS imposing on code readability)
if (observer) {
Object.keys(value).forEach((name) => {
if (observer) {
observer.next();
}
});
}