Żadne przeciążenie nie pasuje
No overload matches this call.Własne słowa kompilatora. Nietłumaczone — to ten ciąg, który wkleiłeś w wyszukiwarkę.
Funkcja ma kilka sygnatur, a argumenty nie pasują do żadnej. Kompilator raportuje wtedy każdą próbę i dlatego ten błąd jest tak długi.
Odtworzenie
declare function f(a: string): void declare function f(a: number): void f(true)
Build potwierdza, że to emituje dokładnie ten kod.
Dlaczego kompilator tak mówi
Rozstrzyganie przeciążeń próbuje kolejnych sygnatur w kolejności deklaracji i zatrzymuje się na pierwszej pasującej. Gdy nie pasuje żadna, nie ma jednego „właściwego” błędu do zgłoszenia, więc zgłaszana jest porażka każdego kandydata po kolei. Przydatna część to prawie nigdy pierwszy wiersz: to lista pod nim, gdzie zwykle jeden kandydat zawiódł z dużo drobniejszego powodu niż reszta.
Naprawy
- 01
declare function f(a: string): void declare function f(a: number): void f('true')
Dopasuj się do jednej z nich. Znajdź na liście kandydata o najdrobniejszej skardze i spełnij właśnie jego wymagania.
- 02
declare function f(a: string): void declare function f(a: number): void declare function f(a: boolean): void f(true)
Albo dodaj brakujące przeciążenie, jeśli funkcja powinna obsługiwać ten kształt. Przeciążenia to lista zamierzonych zastosowań; nowe zastosowanie to nowy wpis.
Wniosek
Czytaj błędy przeciążeń od dołu. Ostatni kandydat to zwykle ten, o który ci chodziło, a jego skarga jest tą wartą naprawy.