Завдання

Реалізувати допоміжний тип If, який приймає умову C, типи T та F. Залежно від того, чи умова C істинна повернути тип T або F.

Наприклад:

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

Розв’язок

Використовуйте умовні типи (conditional types) в TypeScript коли вам необхідно вжити “if” до типів. Якщо тип умови буде true то візьмемо тип з гілки “true” і навпаки.

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

Але так ми отримаємо помилку при компіляції, тому що ми намагаємось привести C до булевого типу.

Виправимо це додавши обмеження extends boolean до параметру C.

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

Посилання