Closed lulla-by closed 9 months ago
function isNonNullable<T>(value: T): value is NonNullable<T> {
return value !== null && value !== undefined;
}
isNonNullable
함수는 어떤 값이 null
이나 undefined
가 아닐 때 true
를 반환한다.T
를 받아, NonNullable<T>
로 타입 가드를 한다.value !== null && value !== undefined
를 통해 값이 null
이나 undefined
가 아닌지 확인한다.function NonNullable<T>(value: T): value is NonNullable<T> {
return value !== null && value !== undefined;
}
매개변수 value
가 null 또는 undefined일 때 false를 반환하는 타입 가드 함수 NonNullable
을 만들었습니다.
function isNotUndefined<T>(value: T): value is NonNullable<T> {
return value !== null && value !== undefined;
}
제네릭 타입 T를 받고, value가 null
이나 undefined
가 아닐 경우 true를 반환합니다. 반환 타입이 value is NonNullable<T>
는 타입스크립트에게 isNotUndefined
함수가 true를 반환할 때 value의 타입이 null
이나 undefined
를 제외한 T의 타입입을 알려주는 타입 가드입니다.
정답은 다음과 같습니다.
NonNullableType
은 제네릭으로 T를 받아 NonNullable
유틸타입으로 넘겨줍니다.
이후 testNonNullable
함수에서 받은 value
가 null
또는 undefined
인지를 확인하여 null or undefined
인 경우에는 false
를 아닌 경우에는 true
를 반환해줍니다.
type NonNullableType<T> = NonNullable<T>;
function testNonNullable<T>(value: T): value is NonNullableType<T> {
return value !== null && value !== undefined;
}
이를 활용한 데이터의 타입을 반환하는 예시 함수입니다.
function isValidType(data?: any) {
const result = testNonNullable(data);
return result ? typeof data : "null or undefined";
}
console.log(isValidType("data")); // "string"
console.log(isValidType()); // "null or undefined"
console.log(isValidType(12)); // "number"
📝 p171
❓ 일반적으로 null이나 undefined를 처리하는 경우 if문을 사용한 타입가드를 통해 값을 처리합니다.
하지만 TS에서는
is
키워드와 TS에서 제공하는 유틸리티 타입인NonNullable
을 사용하여 null을 처리하는 함수를 만들어 타입 가드에 활용할 수 있습니다.is
와NonNullable
을 사용하여 타입 가드 함수를 작성해보세요.