If
Завдання
Реалізувати допоміжний тип 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;
Коментарі