[typescript] 객체 타입을 확인하는 타입 가드 함수 작성 방법

TypeScript에서는 자주 사용되는 객체의 타입을 확인하는 타입 가드 함수를 작성할 수 있습니다. 타입 가드 함수는 런타임에서 특정 객체의 타입을 확인하고, 해당 객체를 보다 구체적인 타입으로 추론할 수 있도록 도와줍니다. 이를 통해 코드의 안정성을 보장하고, 타입 추론의 정확도를 높일 수 있습니다.

타입 가드 함수 작성 방법

타입 가드 함수를 작성하기 위해서는 다음과 같은 단계를 따릅니다.

1. typeof 연산자를 사용한 타입 가드

typeof 연산자를 활용하여 해당 속성이 특정한 타입인지를 확인하는 타입 가드 함수를 작성할 수 있습니다.

function isString(value: unknown): value is string {
  return typeof value === 'string';
}

2. 사용자 정의 타입 가드

인터페이스나 타입으로 정의된 객체의 속성을 확인하여 타입을 가드하는 사용자 정의 타입 가드를 작성할 수 있습니다.

interface Car {
  model: string;
  year: number;
}

function isCar(obj: any): obj is Car {
  return 'model' in obj && 'year' in obj;
}

3. instanceof 연산자를 사용한 타입 가드

클래스의 생성자 함수와 instanceof 연산자를 이용하여 특정 클래스의 인스턴스인지를 확인하는 타입 가드를 작성할 수 있습니다.

class Animal {
  name: string;
  constructor(name: string) {
    this.name = name;
  }
}

class Dog extends Animal {
  breed: string;
  constructor(name: string, breed: string) {
    super(name);
    this.breed = breed;
  }
}

function isDog(obj: any): obj is Dog {
  return obj instanceof Dog;
}

4. in 연산자를 사용한 타입 가드

in 연산자를 사용하여 객체의 속성 존재 여부를 확인하여 타입을 가드하는 방법입니다.

interface Rectangle {
  width: number;
  height: number;
}

function isRectangle(obj: any): obj is Rectangle {
  return 'width' in obj && 'height' in obj;
}

결론

타입 가드 함수를 작성하면 TypeScript에서 자바스크립트와 마찬가지로 객체의 타입을 보다 안전하게 다룰 수 있습니다. 타입 가드 함수를 통해 코드의 안정성을 높이고, 타입 안정성을 유지하는데 도움을 줄 수 있습니다.

참고 자료: TypeScript 공식 문서 - 타입 가드

감사합니다!