-
Notifications
You must be signed in to change notification settings - Fork 13k
Description
The below code is a super simplified version of a real world scenario I just ran into. When trying to assign a value only if some other condition is true and otherwise returning undefined
, TypeScript produces a strange union type that includes empty string ''
.
The linked Playground contains a slightly larger example that gets closer to demonstrating my real world use case.
I would argue that in cases where the compiler can clearly know that something is truthy, it should evaluate to the type of the value on the right hand side of &&
, even with strictNullChecks
off.
TypeScript Version: 3.5.1 (With strictNullChecks
off)
Search Terms: logical and empty string
, string && empty
Code
const x = true && 'a'
Expected behavior:
Type of x
is 'a'
Actual behavior:
Type of x
is '' | 'a'
Related Issues:
Couldn't find any 🕵🏼♂️