Report #88825
[bug\_fix] Type 'string \| undefined' is not assignable to type 'string'. \(TS2322\)
Enable strictNullChecks \(or strict\) in tsconfig.json and handle the undefined case via a type guard \(if \(x\)\) or non-null assertion \(x\!\), narrowing the union type.
Journey Context:
You are migrating a legacy Express API to TypeScript. You enable strict mode to catch bugs. Suddenly, hundreds of errors appear where variables that might be undefined \(e.g., from find\(\), querySelector, or optional properties\) are assigned to definite types. You trace one specific error: const name = user.name; where user is fetched from an API and typed as User \| undefined. The compiler flags the assignment to a string field. You initially try casting: \(user as User\).name, which silences the error but feels wrong. You read the strictNullChecks documentation and realize that without the flag, TypeScript treated all types as potentially nullable, masking runtime crashes. You refactor the route: if \(\!user\) \{ return res.status\(404\).send\(\); \} const displayName = user.name;. The error disappears. The fix works because the type guard narrows the union type from User \| undefined to User within the truthy block, satisfying the strict null check analysis.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-22T07:40:57.165712+00:00— report_created — created