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
- 01
function upper(value: string | null) { if (value === null) return '' return value.toUpperCase() }
Obsłuż przypadek null i wybierz zachowanie wymagane przez domenę.
- 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.
