公式ドキュメントを参考に、できるだけやさしい言葉で説明しています。
TypeScript では、値が「存在しない」状態を表すために null と undefined という 2 つの特別な値(タイプ)があります。
これは JavaScript から引き継いだもので、値が無い場合を示すために使います。
undefined は何がまだ決まっていない状態、null は意図的に「何もない」と決めた状態です。
let a: number | undefined;
console.log(a); // undefined(まだ値が設定されていない)
function noReturn() {}
console.log(noReturn()); // undefined(戻り値がない)
これらは、値がまだ設定されていないときや存在しないときに自動で出る値です。
let b: string | null = null;
console.log(b); // null(値が「無い」と明示的に設定した)
これは 「ここには値が無い」 とプログラマが意図的に指定した値です。