Nie ma takiej właściwości
Property 'b' does not exist on type '{ a: number; }'.Własne słowa kompilatora. Nietłumaczone — to ten ciąg, który wkleiłeś w wyszukiwarkę.
Sięgnąłeś po właściwość, której typ nie ma. Często typ jest dobry, a pisownia zła; czasem typ jest węższy, niż wartość naprawdę jest.
Odtworzenie
declare const o: { a: number } o.b
Build potwierdza, że to emituje dokładnie ten kod.
Dlaczego kompilator tak mówi
Typy obiektowe są dokładne co do swojej zawartości. Kompilator nie mówi, że właściwości brakuje w czasie wykonania — może istnieć — tylko że nic w programie nie zapowiedziało jej istnienia, więc nic nie można o niej założyć. Gdy wartość przyszła z JSON-a albo z API, ten błąd jest zwykle słuszny, a kłamie typ.
Naprawy
- 01
declare const o: { a: number; b: string } o.b
Dodaj ją do typu, jeśli wartość naprawdę ją niesie. Typ jest opisem; spraw, by opisywał prawdę.
- 02
declare const o: { a: number; b?: string } if (o.b !== undefined) { o.b.trim() }
Albo oznacz ją jako opcjonalną i sprawdzaj, jeśli bywa obecna. To kształt pasujący do rzeczywistości dla wszystkiego, co sparsowane, a nie skonstruowane.
Wniosek
Ten błąd to spór między twoim typem a twoją wartością. Zdecyduj, które z nich się myli, zanim zmienisz którekolwiek.