Учитывая эту упрощенную ванильную JS функцию:
function getStringOrNumber(val) {
if (typeof val === 'string') {
return 'It was a string';
} else {
return 5;
}
}
Как я могу сказать TypeScript, что когда он получает строку, он возвращает строку, а когда он получает число, он возвращает число?
Я экспериментировал с различными методами и обнаружил, что использование этих перегрузок работает, но это кажется слишком сложным, и мне интересно, есть ли что-то, что я пропускаю. В частности, в этом решении я не понимаю, зачем нужна третья строка (см. Ссылку ниже для получения дополнительной информации).
function useOverloadsExtra(val: string): string
function useOverloadsExtra(val: number): number
function useOverloadsExtra(val: string | number): string | number
function useOverloadsExtra(val: string | number): string | number {
if (typeof val === 'string') {
return 'It was a string';
} else {
return 5;
}
}
Вот другие решения, которые я пробовал