TS2393
Zduplikowana implementacja funkcji
Duplicate function implementation.Własne słowa kompilatora. Nietłumaczone — to ten ciąg, który wkleiłeś w wyszukiwarkę.
Dwa ciała funkcji mają tę samą nazwę w jednym zakresie; przeciążenia mogą mieć wiele sygnatur, ale tylko jedną implementację.
Odtworzenie
function parse(value: string) { return value } function parse(value: number) { return value }
Build potwierdza, że to emituje dokładnie ten kod.
Dlaczego kompilator tak mówi
JavaScript nie wybiera między deklaracjami funkcji o tej samej nazwie na podstawie typu parametru; późniejsza zastąpiłaby wcześniejszą. Przeciążenia TypeScript oddzielają więc kilka sygnatur istniejących tylko jako typy od jednego emitowanego ciała.
Naprawy
- 01
function parse(value: string): string function parse(value: number): number function parse(value: string | number): string | number { return value }
Zapisz sygnatury przeciążeń, a po nich jedną implementację wystarczająco szeroką, by obsłużyć wszystkie.
- 02
function parseText(value: string) { return value } function parseNumber(value: number) { return value }
Nadaj różnym operacjom różne nazwy, gdy nie potrzebują wspólnego przeciążonego API.
Wniosek
Zestaw przeciążeń ma wiele deklaracji, ale dokładnie jedno ciało.
