[typescript] 맵드 타입을 활용한 타입 가드 함수 작성 방법

맵드 타입은 TypeScript에서 타입을 동적으로 변환하고 만들어내는데 사용되는 강력한 도구입니다. 이 글에서는 맵드 타입을 활용하여 타입 가드 함수를 어떻게 작성하는지 알아보겠습니다.

타입 가드 함수란?

타입 가드 함수는 특정 조건을 만족하는 타입을 다른 타입으로 변환하는 함수를 말합니다. 이를 통해 코드에서 타입 안전성을 보장할 수 있고, 런타임 에러를 방지할 수 있습니다.

맵드 타입을 활용한 타입 가드 함수 작성하기

아래는 맵드 타입을 사용하여 타입 가드 함수를 작성하는 예제입니다.

type User = {
  id: number;
  username: string;
  email: string;
  isAdmin: boolean;
};

type UserWithRestrictedData = {
  id: number;
  username: string;
};

// User 타입의 속성 중 isAdmin이 false인 경우 RestrictedUser 타입으로 변환하는 타입 가드 함수
type RestrictedUser = {
  [K in keyof User]: K extends "isAdmin" ? false : User[K];
};

function restrictUser(user: User): UserWithRestrictedData | RestrictedUser {
  if (user.isAdmin) {
    return user;
  } else {
    return {
      id: user.id,
      username: user.username,
    } as UserWithRestrictedData;
  }
}

위 예제에서는 User 타입과 UserWithRestrictedData 타입을 정의하고, 맵드 타입을 사용하여 타입 가드 함수 restrictUser를 작성하였습니다. 이 함수는 입력된 User 타입의 isAdmin 속성이 true인 경우에는 UserWithRestrictedData 타입으로, false인 경우에는 RestrictedUser 타입으로 변환하여 반환합니다.

마치며

맵드 타입을 활용하면 타입 가드 함수를 쉽게 작성할 수 있으며, 코드의 가독성과 안전성을 높일 수 있습니다. 타입 가드 함수를 통해 더욱 견고한 TypeScript 코드를 작성해 보시기를 권장합니다.

이 외에도 TypeScript에서 활용할 수 있는 다양한 맵드 타입에 대해 더 알아보시려면 공식 TypeScript 문서를 참고하시기 바랍니다.