TS2532
Obiekt może być undefined
Object is possibly 'undefined'.Własne słowa kompilatora. Nietłumaczone — to ten ciąg, który wkleiłeś w wyszukiwarkę.
Właściwość jest odczytywana bezpośrednio z wyrażenia, którego wynik może być `undefined`.
Odtworzenie
function find(): { name: string } | undefined {
return undefined
}
find().nameBuild potwierdza, że to emituje dokładnie ten kod.
Dlaczego kompilator tak mówi
Sygnatura funkcji uczciwie zgłasza możliwość braku wyniku. Natychmiastowy dostęp do właściwości ignoruje tę gałąź i nie ma stabilnej zmiennej, którą analiza przepływu mogłaby wcześniej zawęzić.
Naprawy
- 01
function find(): { name: string } | undefined { return undefined } const result = find() if (result) { result.name }Zapisz wynik, sprawdź go i użyj zawężonej zmiennej.
- 02
function find(): { name: string } | undefined { return undefined } const name = find()?.name ?? 'anonymous'Użyj opcjonalnego łańcuchowania, gdy brak ma prowadzić do wartości zastępczej.
Wniosek
Traktuj `undefined` jako gałąź do obsłużenia, a nie ostrzeżenie do uciszenia.
