[typescript] 타입 가드를 사용한 필드 필터링
본 포스트에서는 TypeScript에서 타입 가드를 활용하여 필드를 필터링하는 방법에 대해 알아보겠습니다.
타입 가드(Type Guard)
타입 가드는 런타임 시점에 변수의 타입을 확인하고 해당 타입에 따라 다른 동작을 수행하는 TypeScript의 기능입니다.
아래 예시를 통해 이를 살펴보겠습니다.
function isString(value: any): value is string {
return typeof value === 'string';
}
let value: any = 'hello';
if (isString(value)) {
console.log(value.toUpperCase());
}
위 예시에서 isString
함수는 매개변수의 타입을 확인하고, 해당 타입이 string
이면 true
를 반환합니다. 이후 if
문에서 이를 활용하여 value
의 타입을 동적으로 확인하여 안전하게 toUpperCase
메서드를 호출할 수 있습니다.
필드 필터링
타입 가드를 이용하여 객체의 필드를 필터링할 수도 있습니다. 예시를 통해 알아보겠습니다.
interface Person {
name: string;
age: number;
job?: string;
}
function hasJob(person: Person): person is { name: string; age: number; job: string } {
return typeof person.job === 'string';
}
let person1: Person = { name: 'Alice', age: 30, job: 'Engineer' };
let person2: Person = { name: 'Bob', age: 25 };
if (hasJob(person1)) {
console.log(person1.name + ' has a job as ' + person1.job);
}
if (hasJob(person2)) {
console.log(person2.name + ' has a job as ' + person2.job);
}
위 예시에서 hasJob
함수는 job
필드가 존재할 경우 true
를 반환합니다. 따라서 if
문에서 이를 활용하여 job
필드가 있는 경우에만 해당 내용을 출력하도록 구현할 수 있습니다.
이를 통해 타입 가드를 사용하여 필드를 필터링할 수 있다는 것을 확인할 수 있습니다.
결론
타입 가드를 사용하여 TypeScript에서 객체의 필드를 필터링하는 방법에 대해 알아보았습니다. 이를 통해 좀 더 안전하고 명확한 코드를 작성할 수 있으며, 코드의 유지보수성을 향상시킬 수 있습니다.
참고문헌: