고급 TypeScript -타입 가드와 고급 타입: 타입 좁히기
타입 가드와 고급 타입: 타입 좁히기
타입 가드는 TypeScript에서 변수가 특정 타입인지 확인하는 메커니즘입니다. 이를 통해 코드의 안정성을 높이고, 런타임에서 발생할 수 있는 오류를 줄일 수 있습니다. 특히 고급 타입과 결합하여 사용될 때, 더 강력한 타입 시스템을 제공하며, 개발자는 더욱 확실하게 코드를 작성할 수 있습니다.
1. 타입 좁히기
타입 좁히기는 변수의 실제 타입을 좁혀서 보다 구체적인 형태로 사용할 수 있게 하는 과정입니다. 예를 들어, string | number
와 같은 유니온 타입이 있을 때, 이 변수가 문자열인지 숫자인지를 판단하여 그에 맞는 로직을 적용할 수 있습니다.
예제:
function printValue(value: string | number) {
if (typeof value === 'string') {
console.log(`문자열 값: ${value}`);
} else {
console.log(`숫자 값: ${value}`);
}
}
printValue("안녕하세요"); // 출력: 문자열 값: 안녕하세요
printValue(42); // 출력: 숫자 값: 42
위의 예제에서는 typeof
연산자를 사용하여 value
가 문자열인지 숫자인지를 확인하고 이에 따라 다른 출력을 하게 됩니다. 이렇게 하면 각 경우에 대한 처리를 명확하게 할 수 있어 코드가 더 안전해집니다.
2. 사용자 정의 타입 가드
사용자 정의 타입 가드는 함수로 구현되어 특정 조건을 만족하는 경우에만 해당 변수를 특정 타이트로 간주하도록 도와줍니다. 이러한 방식은 복잡한 객체나 인터페이스가 있는 경우 매우 유용합니다.
예제:
interface Dog {
bark(): void;
}
interface Cat {
meow(): void;
}
function isDog(animal: Dog | Cat): animal is Dog {
return (animal as Dog).bark !== undefined;
}
const pet = { bark() { console.log("멍멍!"); } };
if (isDog(pet)) {
pet.bark(); // 멍멍!
} else {
pet.meow(); // 에러 없음; pet는 cat으로 간주됨.
}
여기서는 isDog
라는 함수를 만들어 주어진 동물이 개인지 확인합니다. 이 함수는 animal is Dog
라는 반환 형식을 가지고 있어 TypeScript에게 해당 변수의 유형을 명확하게 알려줄 수 있습니다.
3. 다양한 상황에서의 활용
타입 좁히기를 통해 여러 가지 상황에서 코드 품질과 안정성을 높일 수 있습니다:
-
API 응답 처리: API 호출 시 받은 데이터가 예상한 구조인지를 체크하여 적절한 처리를 할 수 있습니다.
-
폼 입력 검증: 사용자 입력 데이터를 처리할 때, 입력된 데이터 유형이 올바른지 확인하고 그에 따른 피드백이나 처리를 수행할 수 있습니다.
-
비즈니스 로직: 비즈니스 요구사항에 따라 다르게 처리해야 할 경우에도 유용합니다.
결론적으로, 타입 가드와 고급 타입은 TypeScript를 사용하는 데 있어 필수적인 요소이며, 이를 잘 활용하면 더욱 안전하고 유지보수가 용이한 코드를 작성할 수 있게 됩니다.