[TS] 유니언 타입이란?

2023. 8. 3. 12:36TS

TypeScript의 유니언 타입은 변수가 여러 타입 중 하나일 수 있음을 선언하는 방법입니다. 유니언 타입은 수직 바(|)를 사용하여 표시되며, 이는 변수가 "이 타입 또는 그 타입"임을 나타냅니다.

다음은 유니언 타입의 예

let unionType: string | number | boolean;

unionType = "Hello";  // 가능합니다. string은 유니언 타입의 일부입니다.
unionType = 7;  // 가능합니다. number은 유니언 타입의 일부입니다.
unionType = true;  // 가능합니다. boolean은 유니언 타입의 일부입니다.
unionType = {};  // 에러! 객체는 유니언 타입에 선언되지 않았습니다.

유니언 타입은 다양한 유형의 값을 다루는 데 유용합니다. 예를 들어, 함수가 여러 유형의 입력을 받을 수 있거나, 객체의 속성이 여러 유형을 가질 수 있을 때 유니언 타입을 사용할 수 있습니다. 또한 함수의 반환값이 여러 유형 중 하나일 수 있을 때 유니언 타입을 사용할 수 있습니다.

유니언 타입을 사용하면, TypeScript 컴파일러는 해당 변수를 모든 가능한 타입으로 취급합니다. 이는 일부 상황에서는 추가적인 타입 검사를 필요로 하게 만들 수 있습니다. 예를 들어, string | number 유니언 타입의 변수를 가지고 있고 그 변수가 문자열일 때만 특정 작업을 수행하려는 경우, 타입 가드를 사용하여 변수의 현재 타입을 체크해야 할 수 있습니다.

if (typeof unionType === 'string') {
  console.log(unionType.toUpperCase()); // unionType이 문자열일 경우에만 toUpperCase() 메서드 호출 가능
}

TypeScript에서 유니언 타입 외에도 다양한 타입 선언 방법이 있습니다. 유니언 타입과 유사한 기능을 하는 것은 any와 unknown, 그리고 intersection 타입이 있습니다.

  • any: any 타입은 변수가 어떤 타입이든 될 수 있음을 나타냅니다. 즉, TypeScript는 any 타입의 변수에 대한 타입 검사를 수행하지 않습니다. 이는 유연성을 제공하지만, 타입 안전성을 잃을 수 있어 주의가 필요합니다.
let variable: any;

variable = "Hello";  // 가능
variable = 7;  // 가능
variable = {};  // 가능
  • unknown: unknown 타입은 any와 비슷하지만, unknown 타입의 변수는 직접적으로 사용하려면 타입을 좁혀야 하는 (즉, 타입을 확인해야 하는) 점에서 any와 다릅니다. 이렇게 하면 타입 안전성을 유지할 수 있습니다.
let variable: unknown;

variable = "Hello";  // 가능
variable = 7;  // 가능
variable = {};  // 가능

let str: string = variable;  // 에러! unknown 타입을 string에 할당하려면 타입 확인이 필요합니다.
  • Intersection: intersection 타입은 여러 타입을 하나로 결합할 수 있게 해주는 기능입니다. & 연산자를 사용하여 표현하며, 이는 변수가 "이 타입 그리고 그 타입"임을 나타냅니다.
type FirstType = {
  a: number;
  b: string;
};

type SecondType = {
  c: boolean;
};

type CombinedType = FirstType & SecondType;

let variable: CombinedType;

variable = { a: 5, b: "Hello", c: true };  // 가능
variable = { a: 5, b: "Hello" };  // 에러! c 속성이 누락되었습니다.

'TS' 카테고리의 다른 글

[TS] void란 뭘까?  (0) 2023.08.03
[React] React + TypeScript 시작하기  (0) 2021.10.21