본문 바로가기
Javascript

타입스크립트 - 연산자를 통한 타입 정의

by 안자바먹지 2021. 4. 8.
728x90

유니온 타입 (Union Type)

 

쉽게 말하면 OR 연산자라고 할 수 있다.

 

function logMessage(value: string | number) {
  console.log(value)
}

logMessage('hello')
logMessage(10)

 

이 경우 | 키워드를 사용하여 정의할 수 있으며, string과 number 타입 모두 받을 수 있다는 의미이다.

 

장점

VSCode에서 타입추론을 더 편하게 할 수 있다.

 

var message: string | number | boolean

function logMessage(value: string | number | boolean) {
  if (typeof value === 'number') value.toLocaleString()
  if (typeof value === 'string') value.toString()
}

 

 

특징

 

interface Developer {
  name: string;
  skill: string;
}

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

function askSomeone(someone: Developer | Person) {
  someone.name // 가능
  someone.skill // 불가능
  someone.age // 불가능
}

 

askSomeone 함수의 매개변수를 Developer와 Person 타입 모두 받을 수 있도록 유니온 타입을 사용했다. 하지만 안에서 사용할 수 있는 속성은 공통 속성인 name만 사용할 수 있다. 그 이유는 타입스크립트 입장에서 someone이 어떤 값이 들어올지 모르는 상황에서 검증되지 않은 속성 (skill, age)을 사용하지 못하게 하기 때문이다. 

 

정리하자면 인터페이스나 특정 구조체에 대해 유니온 타입을 사용한다면 공통된 속성만 사용할 수 있다고 기억하면 된다. 

 

 

인터섹션 타입 (Intersection Type)

 

AND 연산자라고 볼 수 있다. 즉 여러 타입을 모두 만족하는 하나의 타입을 말한다.

 

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

interface Developer {
  name: string;
  skill: string;
}

type AB = Person & Developer

 

728x90

댓글