[typescript] 타입 가드 사용시 주의사항
타입스크립트에서 타입 가드를 사용하면 코드의 안정성을 높일 수 있지만, 몇 가지 주의사항이 있습니다. 이 글에서는 타입 가드를 사용할 때 주의해야 할 사항에 대해 알아보겠습니다.
1. 타입 병합
타입 가드를 사용할 때 주의해야 할 점 중 하나는 타입 병합입니다. 타입 병합은 두 개 이상의 타입을 하나로 병합하는 것을 의미합니다. 타입 가드를 사용하다 보면 여러 조건에 따라 다른 타입을 반환하는 경우가 있는데, 이때 타입이 병합되는 것을 방지해야 합니다.
잘못된 예시:
interface Bird {
fly: boolean;
layEggs: boolean;
}
interface Fish {
swim: boolean;
layEggs: boolean;
}
function getPet(): Bird | Fish {
// ...
}
let pet = getPet();
if (pet.layEggs) {
// Error: Property 'swim' does not exist on type 'Bird | Fish'.
// Property 'swim' does not exist on type 'Bird'.
pet.swim;
}
올바른 예시:
function isFish(pet: Bird | Fish): pet is Fish {
return (pet as Fish).swim !== undefined;
}
let pet = getPet();
if (isFish(pet)) {
pet.swim;
}
2. 타입 단언
타입 가드를 사용하다 보면 타입 단언을 남발하는 경우가 있는데, 이는 가급적 피해야 합니다. 타입 단언은 컴파일러에게 “내가 확신한다”고 알리는 것이기 때문에 신중히 사용해야 합니다.
잘못된 예시:
function getStringLength(str: string | null): number {
if (str === null) {
return 0;
}
return str.length; // Error: Object is possibly 'null'.
}
올바른 예시:
function getStringLength(str: string | null): number {
if (str === null) {
return 0;
}
return str.length as number; // Type assertion
}
결론
타입 가드를 사용할 때에는 타입 병합과 타입 단언에 주의해야 합니다. 이를 통해 코드의 안정성을 높일 수 있고, 타입 안전성을 유지할 수 있습니다.
더 많은 정보는 타입스크립트 공식 문서를 참고하세요.