Przejdź do treści
TS7015

    ↑↓ ruch · ⏎ otwórz · esc zamknij

    TS7015

    Tablica indeksowana wartością inną niż liczba

    Element implicitly has an 'any' type because index expression is not of type 'number'.

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

    Tablice opisują pozycje liczbowe; klucz tekstowy taki jak `first` nie jest jedną z nich.

    Odtworzenie

    const values = [1, 2]
    
    values['first']

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

    Dlaczego kompilator tak mówi

    Obiekty JavaScript mogą mieć dowolne właściwości, ale typ tablicy obiecuje tylko elementy liczbowe i standardowe składowe. TypeScript nie wymyśli sygnatury indeksu tekstowego i nie zamieni po cichu wyniku w `any`.

    Naprawy

    1. 01
      const values = [1, 2]
      
      const first = values[0]

      Użyj pozycji liczbowej, gdy kolekcja jest uporządkowana.

    2. 02
      const values: Record<string, number> = {
        first: 1,
        second: 2,
      }
      
      const first = values['first']

      Użyj obiektu z kluczami lub `Record`, gdy wartości identyfikują nazwy, a nie pozycje.

    Wniosek

    Wybierz strukturę pasującą do wyszukiwania: tablice dla pozycji, rekordy dla nazw.

    Dokąd dalej

    Błędy