유니온 타입(Union type)
"|"를 사용해 두개 이상의 타입을 선언하는 방식이다.
다음 코드는 유니온 타입으로 작성되었다. 타입을 string과 number 두개를 넣어 선언했고 number에는 length 속성이 존재하지 않기 때문에 에러가 발생하는 것을 알 수 있다.
const printMessate = (message: string | number) => {
return message;
};
const message1 = printMessage(1234);
const message2 = printMessage("Hello World!");
// string이 아닌 number에 length 속성이 존재하지 않기 때문에 에러가 발생한다.
message1.length;
위와 동일한 함수를 제너릭을 통해 구현해보자. printMessage2 함수에 제너릭 타입으로 선언하고 함수 호출 시, String 타입을 명시하였다. 따라서 message1.length를 호출하여도 에러가 발생하지 않는 것을 알 수 있다.
const printMessage2 = <T>(message: T) => {
return message;
};
const message1 = printMessage2<String>("Hello world!");
message1.length;