Post

Union Type

유니언 타입에 대해 알아보자.

Union Type이란?


Union Types(유니언 타입)은 TypeScript에서 여러 타입 중 하나가 될 수 있는 값을 나타내는 방법이다.
유니언 타입은 | 기호를 사용하여 타입들을 결합한다.
이는 변수가 여러 타입의 값 중 하나를 가질 수 있음을 의미한다.

유니언 타입의 정의와 사용


1
2
3
4
5
6
// number 또는 string 타입을 가질 수 있는 변수
let myVar: number | string;

myVar = 10;      // 올바른 사용 예: number 타입
myVar = "Hello"; // 올바른 사용 예: string 타입
myVar = true;    // 오류: boolean 타입은 허용되지 않음

위 예제에서 myVar 변수는 number 또는 string 타입 중 하나가 될 수 있다.
따라서 숫자나 문자열을 할당하는 것은 가능하지만, 부울값 등 다른 타입은 할당할 수 없다.

유니언 타입을 사용한 함수 매개변수


함수 매개변수에서 유니언 타입을 사용할 수 있다. 이는 함수가 여러 타입의 인자를 수용할 수 있게 만든다.

1
2
3
4
5
6
7
8
// number 또는 string 타입을 받는 함수
function printId(id: number | string) {
    console.log(`ID: ${id}`);
}

printId(100);    // 출력: ID: 100
printId("abc");  // 출력: ID: abc
printId(true);   // 오류: boolean 타입은 허용되지 않음

유니언 타입을 사용한 객체의 속성


객체의 속성으로 유니언 타입을 사용할 수 있다. 이는 해당 속성이 여러 타입 중 하나를 가질 수 있음을 나타낸다

1
2
3
4
5
6
7
8
9
// number 또는 string 타입을 가지는 객체
type ID = number | string;

function processId(idInfo: { id: ID, type: string }) {
    console.log(`ID: ${idInfo.id}, Type: ${idInfo.type}`);
}

processId({ id: 100, type: "numeric" });   // 출력: ID: 100, Type: numeric
processId({ id: "abc", type: "string" });  // 출력: ID: abc, Type: string

유니언 타입의 주의사항


유니언 타입을 사용할 때 주의할 점은, 각 타입에 대해 공통적으로 사용할 수 있는
메서드나 속성만 사용할 수 있다는 점이다.

예를 들어, number와 string의 공통 메서드인 toString()을 사용할 수 있지만,
특정 타입에만 있는 메서드나 속성은 사용할 수 없다.

Type Alias 대체명 사용하기


TypeScript에서는 Type Alias에 대체명(Union)을 사용하여 더 유연하고 복잡한 타입을 정의할 수 있다.
마찬가지로 대체명은 | 연산자를 사용하여 여러 타입을 하나로 결합할 수 있다.

1
2
3
4
5
6
7
8
9
10
type ID = number | string;
type Result = Success | Error;

function processResult(result: Result): void {
    if ('message' in result) {
        console.error(`Error: ${result.message}`);
    } else {
        console.log(`Success: ${result.data}`);
    }
}

위 예제에서 ID는 number 또는 string 타입을 가질 수 있는 새로운 타입이 되고,
Result는 Success 또는 Error 객체를 가리키는 대체명이다.

결론


유니언 타입은 TypeScript에서 여러 타입 중 하나가 될 수 있는 값을 표현하는 강력한 도구이다.
이를 통해 코드의 유연성을 높이고, 다양한 상황에서 타입 안정성을 유지할 수 있다.

그러나 사용 시 타입의 규모와 관리를 잘 조정하여야 하며, 필요에 따라 다양한 타입을 적절히 조합하는 것이 중요하다.

TypeScript 공식문서

This post is licensed under CC BY 4.0 by the author.