TS7053
Niejawne any z indeksu tekstowego
Element implicitly has an 'any' type because expression of type 'string' can't be used to index typeWłasne słowa kompilatora. Nietłumaczone — to ten ciąg, który wkleiłeś w wyszukiwarkę.
Zaindeksowałeś obiekt zwykłym string, a kompilator nie umie stwierdzić, którą właściwość masz na myśli — wynikiem byłoby any, a strict nie przepuści tego po cichu.
Odtworzenie
declare const obj: { a: number } declare const key: string const value = obj[key]
Build potwierdza, że to emituje dokładnie ten kod.
Dlaczego kompilator tak mówi
string to każdy tekst, a obj ma dokładnie jeden klucz. Kompilator nie może wykluczyć obj["bzdura"], które nie ma żadnego typu, więc uczciwym wynikiem jest any — a przy noImplicitAny any, o które nie prosiłeś, jest błędem, a nie cichą dziurą. Komunikat opisuje lukę w jego wiedzy, a nie błąd w tym, co napisałeś.
Naprawy
- 01
declare const obj: { a: number } declare const key: keyof typeof obj const value = obj[key]
Zawęź klucz do kluczy, które istnieją.
keyof typeof objto"a", a indeksowanie nim jest dokładne. - 02
declare const obj: Record<string, number> declare const key: string const value = obj[key]
Albo powiedz, że obiekt naprawdę przyjmuje dowolny tekst. Sygnatura indeksu to obietnica o każdym kluczu i jest właściwą odpowiedzią, gdy obiekt jest słownikiem, a nie ustalonym kształtem.
Wniosek
Zdecyduj, czym obiekt jest: ustalonym kształtem indeksowanym własnymi kluczami czy słownikiem przyjmującym cokolwiek. Większość tych błędów to obiekt używany jako jedno i drugie naraz.

