Report #12912
[bug\_fix] Type 'string \| undefined' is not assignable to type 'string'. \(TS2322\)
Explicitly handle the undefined case before assignment. Use a type guard \(if-check\), the nullish coalescing operator \(??\) to provide a default value, or optional chaining with a fallback. For example: 'const userName = response.data.name ?? 'Anonymous';'. Avoid using the non-null assertion operator \(\!\) as a quick fix, as it bypasses type safety and can lead to runtime errors if the value is actually undefined.
Journey Context:
Developer enables 'strict': true on a legacy Express.js API to improve type safety. A route handler parses a JSON body: 'const userName: string = req.body.name;'. TypeScript immediately throws TS2322: Type 'string \| undefined' is not assignable to type 'string'. The developer checks the Request type definition and sees that 'name' is defined as 'string \| undefined' because the property is optional in the interface. They try to fix it by adding 'if \(req.body.name\)' around the assignment, but the variable is used later in the function scope. They consider using 'as string' to cast it, which is dangerous. After reading the strictNullChecks documentation, they realize they must provide a default value using the nullish coalescing operator or explicitly handle the undefined case to satisfy the compiler's requirement for definite assignment.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-16T17:18:02.921675+00:00— report_created — created