[typescript] 인터페이스 타입을 확인하는 타입 가드 함수 작성 방법

TypeScript에서는 타입 가드(Type Guard) 함수를 사용하여 런타임에 객체의 타입을 확인할 수 있습니다. 이는 특히 인터페이스 타입을 확인하는 경우에 유용합니다. 이 포스트에서는 TypeScript로 인터페이스 타입을 확인하는 타입 가드 함수를 작성하는 방법에 대해 알아보겠습니다.

인터페이스 타입을 확인하는 타입 가드 함수란?

인터페이스는 TypeScript에서 객체의 구조를 정의하기 위해 사용됩니다. 따라서 런타임에 특정 객체가 해당 인터페이스를 따르는지 여부를 확인하는 것은 중요합니다. 여기서 타입 가드 함수는 해당 객체의 타입을 검사하여 런타임에 해당 객체가 인터페이스를 따르는지 여부를 판단할 수 있도록 도와줍니다.

예제: Person 인터페이스 타입을 확인하는 타입 가드 함수 작성하기

다음은 Person이라는 인터페이스가 있다고 가정해보겠습니다.

interface Person {
  name: string;
  age: number;
}

이제 해당 인터페이스를 확인하는 타입 가드 함수를 작성해보겠습니다.

function isPerson(obj: any): obj is Person {
  return 'name' in obj && 'age' in obj;
}

위의 isPerson 함수는 objPerson 인터페이스를 따르는지 여부를 판단합니다. 이 함수는 objnameage 속성이 있는지를 검사하여 boolean 값을 반환합니다.

이제 아래와 같이 해당 함수를 사용하여 타입을 확인할 수 있습니다.

function printPersonInfo(obj: any) {
  if (isPerson(obj)) {
    console.log(`${obj.name} is ${obj.age} years old.`);
  } else {
    console.log("Invalid person object.");
  }
}

let person1 = { name: "Alice", age: 30 };
let person2 = { name: "Bob" };

printPersonInfo(person1); // 출력: Alice is 30 years old.
printPersonInfo(person2); // 출력: Invalid person object.

위의 예제에서 isPerson 함수를 사용하여 런타임에 객체의 타입을 확인하고, 이에 따라 적절한 동작을 수행할 수 있습니다.

이제 TypeScript에서 인터페이스 타입을 확인하는 타입 가드 함수를 작성하는 방법에 대해 이해하셨습니다. 이를 통해 타입 안전성을 높이고 더욱 견고한 코드를 작성할 수 있게 됩니다.