Przejdź do treści
TS2532

    ↑↓ ruch · ⏎ otwórz · esc zamknij

    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().name

    Build 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

    1. 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.

    2. 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.

    Dokąd dalej

    Błędy