TypeScript · Senior · Запитання 13 з 75
Що робить infer N extends number в умовному типі?
type ToNum<S> = S extends `${infer N extends number}` ? N : never;
type X = ToNum<'42'>;- ✓Правильна відповідь: Виводить
Nз обмеженням -Xбуде літеральним типом42 - 2Перетворює рядок
'42'на число в рантаймі черезNumber() - 3Спричиняє помилку компіляції:
inferне підтримуєextends
Пояснення
Обмеження в infer (TS 4.7+) не лише перевіряє сумісність, а й дає змогу вивести літеральний числовий тип із рядка. Раніше для цього були потрібні вкладені умовні типи.