[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에서 객체의 필드를 필터링하는 방법에 대해 알아보았습니다. 이를 통해 좀 더 안전하고 명확한 코드를 작성할 수 있으며, 코드의 유지보수성을 향상시킬 수 있습니다.

참고문헌: