W TypeScript null
i undefined
są traktowane jako różne typy. Zmienna typu null
oznacza brak wartości, podczas gdy undefined
oznacza, że zmienna została zadeklarowana, ale nie została jeszcze przypisana żadna wartość. W starszych wersjach TypeScript te typy były traktowane jako typy any
, co mogło prowadzić do problemów z bezpieczeństwem typów.
Od TypeScript 2.0, włączono stricte rozróżnienie między null
i undefined
i domyślnie traktowane są one jako różne typy.
Przykład:
let x: string | null = null; let y: string | undefined = undefined; x = 'Hello'; // OK y = 'World'; // OK x = undefined; // Błąd, 'undefined' nie jest typu 'string | null'
Można również zmieniać zachowanie TypeScript, włączając opcję strictNullChecks
w tsconfig.json
, co zmienia sposób traktowania null
i undefined
w kontekście innych typów. W trybie strictNullChecks
wartość null
i undefined
muszą być jawnie przypisane do odpowiednich typów, aby uniknąć błędów.