Напиши тип 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 ошибок.