Вот ссылка на playground typescript link
Проблема в том, что одна из сигнатур перегрузки выдает ошибку:
Overload signature is not compatible with function implementation.
Код:
function a(item: string): void;
function a(key: number, value: string): void; // Ошибка в этой строке на букве 'a'
function a(item?: string, key?: number, value?: string): void {
if (item) {
console.log(item);
} else if (key && value) {
console.log(item);
}
}
В реализации указан тип (optional string), а в перегрузке просят (number), потому компилятор и считает, что перегрузка не соответствует реализации. Вариант с объединением типов и проверкой на них компилируется:
function a(item: string): void;
function a(key: number, value: string): void;
function a(item_or_key: string | number, value?: string): void {
if (typeof item_or_key == 'string') {
console.log('item: ' + item_or_key);
} else if (typeof item_or_key == 'number' && value) {
console.log('key: ' + item_or_key + ', value: ' + value);
}
}
a('aaa');
a(12, 'ss');
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Есть слайдер, необходимо, чтобы текст выезжал сбоку слайдера каждый раз когда приходит очередь данного слайдаНо есть еще одна вещь текст,...
Собственно нужно по клику на ссылку открывать в модальном окне другую стрсайта, но ajax плагина не работает
Делаю выборку по городу, у города есть районы, у них комплексы, а у комплексов квартирыВ конечном итоге мне нужно получить квартиры для определенного...