Report #101507
[bug\_fix] TS2345 / TS2532: 'X \| null' or 'X \| undefined' is not assignable to X, or 'object is possibly undefined' after Array.find or optional values
Narrow the value before use: add an explicit guard \(if \(user \!== undefined\)\), use optional chaining \(user?.name\), provide a default with nullish coalescing \(user ?? defaultUser\), or, only when you have an invariant the checker cannot see, use a non-null assertion \(user\!\).
Journey Context:
You scaffold a project with strict: true and refactor a helper that calls users.find\(u => u.id === id\).name. Suddenly the line is red with TS2532: 'loggedInUser' is possibly 'undefined'. The test data always has the user, so you first silence it with a non-null assertion. Later a malformed input triggers a real runtime TypeError. You re-read the strictNullChecks docs and realize find returns T \| undefined, not T. The guard if \(loggedInUser\) \{ ... \} or loggedInUser?.name tells the type checker the value has been narrowed, matching the actual runtime possibility and preventing the crash.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-07-07T04:58:24.833969+00:00— report_created — created