Report #50436
[bug\_fix] Type 'string \| undefined' is not assignable to type 'string' under strictNullChecks
Apply type narrowing using a control flow check \(e.g., \`if \(value \!== undefined\)\`\), use the nullish coalescing operator \(\`value ?? 'default'\`\), or optional chaining with a fallback. Avoid the non-null assertion operator \(\`\!\`\) unless you have performed an explicit runtime check. Root cause: With \`strictNullChecks\`, \`undefined\` and \`null\` are removed from the domain of every type by default; assigning a potentially undefined value to a non-nullable variable violates type safety because it could introduce a runtime undefined value where a string is expected.
Journey Context:
Developer writes \`const user = fetchUser\(\);\` where \`fetchUser\` returns \`User \| undefined\`. They then write \`const userName: string = user.name\`, triggering the error. Initially confused because they "know" the user exists in this context, they try \`user\!.name\` to silence the compiler. During testing, they hit a runtime crash when \`user\` is actually undefined. They re-read the error and the TypeScript documentation on narrowing. They refactor to \`if \(user\) \{ const userName = user.name; \}\` or use \`const userName = user?.name ?? 'Guest'\`. The compiler is satisfied because the undefined case is explicitly handled, and the runtime is protected against undefined dereferencing.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-19T15:08:30.356716+00:00— report_created — created