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
'Javascript' 카테고리의 다른 글
타입스크립트 - 클래스 (0) | 2021.04.08 |
---|---|
타입스크립트 - Enums (0) | 2021.04.08 |
타입스크립트 - 인터페이스, 타입별칭 (0) | 2021.04.08 |
타입스크립트 - 기본타입과 함수 타입 정의 (0) | 2021.04.07 |
Javascipt를 Typescript 처럼 코딩하기 (0) | 2021.04.07 |
댓글