Назад к вопросам
JuniorТеорияЧасто
Что сообщит tsc об этой программе?
function size(x: string): number;
function size(x: number[]): number;
function size(x: string | number[]): number {
return x.length;
}
function show(v: string | number[]) {
console.log(size(v));
}
show("abc");Ошибку: ни одна перегрузка не подходит к size(v)
- Ждать, что вызов примет сигнатура реализации
string | number[]: вызывающий код видит только перегрузки, и аргумент должен целиком подойти к одной из них. - Ждать, что tsc возьмёт первую перегрузку: он берёт первую, к которой подходит аргумент, а значение
string | number[]не подходит ни к одной.
- Как изменить
size, чтобы вызовsize(v)компилировался? - Когда перегрузки лучше одного параметра-объединения?