여러개의 타입을 합성해서 새롭게 만들어낸 타입
합집합 타입, 교집합 타입이 존재한다.
string와 number의 합집합 타입(string number 유니온타입이라 한다.
let a: string | number;
a = 1;
a = 'hi';
배열의 타입에도 지정가능
let arr: (number | string)[] = [1,'hi']
Union타입은 or 연산 처럼 작동하는 타입이다.
function func(value: number | string ) {
value; // value: number|string;
value.toFixed() // 에러발생 string타입에는 사용할 수 없음
value.toUpperCase() // 에러발생 number 타입에는 사용할 수 없음
}
type Dog = {
name: string;
color: string;
}
type Person = {
name: string;
language: string;
}
type Union1 = Dog | Person
Dog type의 프로퍼티를 갖는 객체
let union2 : Union1 = {
name: '',
language: '',
}
Person type의 프로퍼티를 갖는 객체
let union2 : Union1 = {
name: '',
language: '',
}
Dog, Person type의 프로퍼티를 모두 갖는 객체 (교집합에 있는 객체이다)
let union3: Union1 = {
name: '',
color: '',
language: '',
}
하지만 Dog, Person 타입에 모두 있는 name 프로퍼티만을 지정했을때는 에러가 난다. union4는 Dog타입에도 속하지 않고 (color가 없음) , Person 타입에도 속하지 않는다 (language가 없음)