사실 이 코드가 제대로 된 코드는 아닙니다. 마지막 else문에서 param의 타입이 string | null이거든요. typeof param === 'undefined'에서 undefined 타입이 걸러지지만 else if문에서 string이 걸러지지 않습니다. 빈 문자열('')이 있으므로 else문에서도 param이 string일 수 있습니다.
그리고 자바스크립트에서는 typeof null이 'object'입니다(유명한 버그입니다). 객체와 typeof 결과가 똑같아서 typeof로는 null을 구분할 수 없습니다.
사실은 매우 간단하게 구분할 수 있습니다.
function strOrNullOrUndefined(param: string | null | undefined) {
if (param === undefined) {
param;
} else if (param === null) {
param;
} else {
param;
}
}
// (parameter) param: undefined
// (parameter) param: null
// (parameter) param: string