π Search Terms
ternary, conditional expression, recursion,
β
Viability Checklist
β Suggestion
I propose that the following code should error
declare const b: boolean;
declare const a: any;
const s: string = b ? a : 42;
because number is not assignable to string.
This is already the case for the equivalent return statement "assignment", as of #56941.
function foo(b: boolean, a: any): string {
return b ? a : 42
}
So I think it would make sense to be consistent.
π Motivating Example
My real world code looked something like this
declare const x: unknown;
const s: string = x != null ? (x as any).prop : undefined
Another related example, is that this code should be an error
declare const a: any;
const s: string = a ?? 24;
Which relates to #51665 (comment), where an error should/would occur if the RHS of the ?? were checked separately.
π» Use Cases
- What do you want to use this for?
- What shortcomings exist with current approaches?
- What workarounds are you using in the meantime?
- being sad
- avoiding
any as much as possible
π Search Terms
ternary, conditional expression, recursion,
β Viability Checklist
β Suggestion
I propose that the following code should error
because
numberis not assignable tostring.This is already the case for the equivalent return statement "assignment", as of #56941.
So I think it would make sense to be consistent.
π Motivating Example
My real world code looked something like this
Another related example, is that this code should be an error
Which relates to #51665 (comment), where an error should/would occur if the RHS of the
??were checked separately.π» Use Cases
anyas much as possible