Przejdź do treści
TS2393

    ↑↓ ruch · ⏎ otwórz · esc zamknij

    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

    1. 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.

    2. 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.

    Dokąd dalej

    Błędy