Przejdź do treści
TS18047

    ↑↓ ruch · ⏎ otwórz · esc zamknij

    TS18047

    Wartość może być null

    'value' is possibly 'null'.

    Własne słowa kompilatora. Nietłumaczone — to ten ciąg, który wkleiłeś w wyszukiwarkę.

    Wartość dopuszczająca null jest używana tak, jakby gałąź `null` została już wykluczona.

    Odtworzenie

    function upper(value: string | null) {
      return value.toUpperCase()
    }

    Build potwierdza, że to emituje dokładnie ten kod.

    Dlaczego kompilator tak mówi

    Przy ścisłym sprawdzaniu null `string | null` to dwie rzeczywiste możliwości. Metody `string` są bezpieczne dopiero, gdy przepływ sterowania dowiedzie, że bieżąca wartość należy do gałęzi tekstowej.

    Naprawy

    1. 01
      function upper(value: string | null) {
        if (value === null) return ''
        return value.toUpperCase()
      }

      Obsłuż przypadek null i wybierz zachowanie wymagane przez domenę.

    2. 02
      function upper(value: string | null) {
        return value?.toUpperCase() ?? ''
      }

      Użyj opcjonalnego łańcuchowania z jawną wartością zastępczą dla zwięzłej transformacji.

    Wniosek

    Zawężaj wartości dopuszczające null tam, gdzie ich używasz; asercja non-null tylko przenosi ryzyko do czasu działania.

    Dokąd dalej

    Błędy