Przejdź do treści
TS7031

    ↑↓ ruch · ⏎ otwórz · esc zamknij

    TS7031

    Destrukturyzowana wartość niejawnie ma any

    Binding element 'name' implicitly has an 'any' type.

    Własne słowa kompilatora. Nietłumaczone — to ten ciąg, który wkleiłeś w wyszukiwarkę.

    Wzorzec destrukturyzacji nazywa pole, ale obiekt zawierający to pole nie ma znanego typu.

    Odtworzenie

    function greet({ name }) {
      return name.toUpperCase()
    }

    Build potwierdza, że to emituje dokładnie ten kod.

    Dlaczego kompilator tak mówi

    Adnotacja należy do całego wzorca parametru, nie do jego wnętrza. Dopóki kontener nie ma typu, każda wyciągnięta nazwa dziedziczy brak informacji i staje się niejawnym `any`.

    Naprawy

    1. 01
      function greet({ name }: { name: string }) {
        return name.toUpperCase()
      }

      Dodaj typ bezpośrednio do wzorca obiektu dla małego, jednorazowego kształtu.

    2. 02
      type Person = { name: string }
      
      function greet({ name }: Person) {
        return name.toUpperCase()
      }

      Nazwij kształt, gdy jest współdzielony albo stanowi część publicznego API.

    Wniosek

    Nadaj typ obiektowi poddawanemu destrukturyzacji, a jego wiązania zostaną wywnioskowane automatycznie.

    Dokąd dalej

    Błędy