Напиши тип Senior Утилитарные типы обновлено
Parameters у перегруженной функции
Вопрос
Какой тип получится? Впишите тип.
declare function parse(x: string): string;
declare function parse(x: number): number;
type P = Parameters<typeof parse>; // /* ? */
Попробуйте сами
Напишите тип, как написали бы в коде.
Показать ответ и разбор
Коротко
Правильный тип: [x: number]. Условные типы с infer (а Parameters и ReturnType такие) на перегруженной функции берут последнюю сигнатуру.
Правильный тип
[x: number]
Разбор
Условные типы с infer (а Parameters и ReturnType такие) на перегруженной функции берут последнюю сигнатуру. Поэтому [x: number], а не объединение. Если нужны все варианты, перегрузки заменяют одной сигнатурой с union или дженериком, либо описывают тип перегрузок вручную.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.