Skip to main content

If

Implement the util type If<C, T, F> which accepts condition C, a truthy value T, and a falsy value F. C is expected to be either true or false while T and F can be any type.

For example:

ts
type A = If<true, 'a', 'b'> // expected to be 'a'
Cannot find name 'If'.2304Cannot find name 'If'.
type B = If<false, 'a', 'b'> // expected to be 'b'
Cannot find name 'If'.2304Cannot find name 'If'.
ts
type A = If<true, 'a', 'b'> // expected to be 'a'
Cannot find name 'If'.2304Cannot find name 'If'.
type B = If<false, 'a', 'b'> // expected to be 'b'
Cannot find name 'If'.2304Cannot find name 'If'.
Solution ✅
ts
type If<C, T, F> = C extends true ? T : C extends false ? F : never
 
type A = If<true, 'a', 'b'> // expected to be 'a'
type B = If<false, 'a', 'b'> // expected to be 'b'
type C = If<{}, 'a', 'b'> // expected to be never
ts
type If<C, T, F> = C extends true ? T : C extends false ? F : never
 
type A = If<true, 'a', 'b'> // expected to be 'a'
type B = If<false, 'a', 'b'> // expected to be 'b'
type C = If<{}, 'a', 'b'> // expected to be never