타입스크립트는 타입 가드(type guard)를 활용하여 런타임에 데이터의 유효성을 검사할 수 있습니다. 타입 가드를 사용하면 변수의 타입을 정확히 판단하여 타입 안정성을 보장할 수 있습니다.
타입 가드란?
타입 가드는 주로 타입이 여러 개일 때 해당 변수가 어떤 타입인지 판별해주는 방법을 의미합니다. 보통 typeof
, instanceof
, in
연산자, 사용자 정의 타입 가드 함수를 통해 구현할 수 있습니다.
예를 들어 다음과 같이 typeof
연산자를 사용한 타입 가드를 활용할 수 있습니다.
function isString(x: any): x is string {
return typeof x === "string";
}
function exampleFunc(x: any) {
if (isString(x)) {
console.log(x.length); // 여기서 x는 string 타입으로 인식됨
} else {
console.log(x);
}
}
exampleFunc("hello"); // 출력: 5
exampleFunc(123); // 출력: 123
위 예제에서 isString
함수는 x
가 string
타입인지 여부를 판별하고, exampleFunc
함수에서 isString
을 통해 string
타입 여부를 확인한 후 length
속성을 안전하게 사용할 수 있습니다.
타입 가드의 활용
타입 가드를 사용하면 런타임에서 데이터의 타입을 확인할 수 있어 더 안정적인 코드를 작성할 수 있습니다. 특히 외부 라이브러리나 사용자 입력과 같이 타입이 명확하지 않은 경우에 유용하게 활용될 수 있습니다. 또한, 타입 가드를 활용하면 에러를 더 빨리 발견하고 처리할 수 있어 개발 생산성을 향상시킬 수 있습니다.
사용자 정의 타입 가드 함수
타입스크립트에서는 사용자가 직접 타입 가드 함수를 만들어 활용할 수 있습니다. 예를 들어 다음과 같이 사용자 정의 함수를 만들어 타입 가드로 활용할 수 있습니다.
function isNumber(x: any): x is number {
return typeof x === "number";
}
function printValue(val: string | number) {
if (isNumber(val)) {
console.log(`Value is a number: ${val}`);
} else {
console.log(`Value is a string: ${val}`);
}
}
printValue(123); // 출력: Value is a number: 123
printValue("hello"); // 출력: Value is a string: hello
위의 코드에서 isNumber
함수는 typeof
연산자를 사용하여 인자가 number
타입인지 여부를 판별하고, printValue
함수에서 해당 타입 가드를 활용하여 타입을 확인하여 안정적인 코드를 작성할 수 있습니다.
결론
타입 가드를 사용하면 런타임에서 데이터의 유효성을 검사하여 타입 안정성을 보장할 수 있습니다. 이를 통해 안정적이고 안전한 코드를 작성할 수 있으며, 에러를 미리 방지하고 안정적인 유형의 코드를 작성할 수 있습니다. 타입 가드는 타입 안정성을 유지하면서 코드를 더욱 견고하고 안정적으로 만드는 데 도움을 줄 수 있습니다.
타입 가드에 대한 자세한 정보는 타입스크립트 공식 문서를 참고하세요.