Skip to main content

If [utils]

实现一个 IF 类型,它接收一个条件类型 C ,一个判断为真时的返回类型 T ,以及一个判断为假时的返回类型 F。 C 只能是 true 或者 false, T 和 F 可以是任意类型。

// 例如:Promise<ExampleType>,请你返回 ExampleType 类型。

type A = If<true, 'a', 'b'> // expected to be 'a'
type B = If<false, 'a', 'b'> // expected to be 'b'

/**
* 思路:
* 1 C 只能是 true 或者 false 那就 约束一下 extends true | false 或者 extends boolean
* 2 C 是 true 就 T 否则 F
*/

type If<C extends boolean, T, F> = C extends true ? T : F;