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
- 01
function greet({ name }: { name: string }) { return name.toUpperCase() }Dodaj typ bezpośrednio do wzorca obiektu dla małego, jednorazowego kształtu.
- 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.
