Это должно быть довольно просто - есть 2 возможных ввода для вашего numberStringSwitch
метода - string
или number
- и это именно то, что объединения в машинописи. Это означает, что вы можете написать свой метод "реализации", используя сигнатуру объединения, которая равна string | number
- это важно, потому что, когда вы пишете основную часть вашего метода, вам нужно иметь безопасно напечатанный ввод, который представляет объединение всех ваших входов перегрузки (в данном случаелибо string
, либо number
). Конечно, вы можете использовать any
, как они, но это объединение также является опцией (честно, более читабельная опция для меня).
Вы можете попробовать изменить входные данные на что-то, чего нет в ваших перегрузках. методы, и вы получите ошибку
// error
function numberStringSwitch(x: string | Date) {
return x;
}
Но если вы добавите еще одну перегрузку с помощью Date
и добавите ее тип параметра в окончательное объединение, это сработает:
// works
function numberStringSwitch(x: string): number;
function numberStringSwitch(x: number): string;
function numberStringSwitch(x: Date): string;
function numberStringSwitch(x: string | number | Date) {
return x;
}