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

TypeScript에서는 인덱스 타입(index type)을 활용하여 유연한 타입 시스템을 구성할 수 있습니다. 타입 가드 함수를 작성하여 런타임 중에 동적인 타입을 안전하게 다룰 수 있습니다. 이 글에서는 인덱스 타입을 활용한 타입 가드 함수를 작성하는 방법에 대해 알아보겠습니다.

인덱스 타입이란?

TypeScript의 인덱스 타입은 객체의 속성을 다른 타입으로 매핑하는 방법을 제공합니다. 이를 통해 객체의 특정 속성을 동적으로 다룰 수 있게 됩니다.

예를 들어, 다음과 같이 Person이라는 인터페이스를 정의하고, 이를 name 속성의 타입으로 활용할 수 있습니다.

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

type NameType = Person['name']; // string

타입 가드 함수 작성하기

타입 가드 함수를 작성할 때 인덱스 타입을 활용하면, 동적인 속성에 대한 안전한 타입 검사를 수행할 수 있습니다.

예를 들어, 다음과 같이 User라는 인터페이스를 정의하고, isOnline 속성의 존재 여부에 따라 동적인 타입을 반환하는 타입 가드 함수를 작성할 수 있습니다.

interface User {
    id: number;
    username: string;
    isOnline: boolean;
}

function isUserOnline(user: User, prop: keyof User): prop is 'isOnline' {
    return prop === 'isOnline';
}

// 사용 예
const user: User = { id: 1, username: 'john_doe', isOnline: true };
if (isUserOnline(user, 'isOnline')) {
    // user.isOnline을 안전하게 사용할 수 있음
}

마무리

인덱스 타입을 활용한 타입 가드 함수를 작성하면, 동적으로 변화하는 속성에 대한 안전한 타입 검사를 수행할 수 있습니다. 이를 통해 TypeScript 코드의 안정성을 높일 수 있습니다.

참고 자료: TypeScript Handbook - Index types


본 포스팅은 TypeScript의 인덱스 타입을 활용한 타입 가드 함수 작성 방법에 대해 다루고 있습니다. 인덱스 타입과 타입 가드 함수에 대한 자세한 내용은 TypeScript 공식 핸드북를 참고하시기 바랍니다.