type
타입 앨리어스는 새로운 타입을 정의한다.
타입으로 사용할 수 있다는 점은 인터페이스와 유사하다.
interface Person {
name: string;
age?: number;
}
type Person = {
name: string;
age?: number;
};
인터페이스와 다를게 없어 보이는데??
그렇다. 기능은 완전 동일하다.
하지만 타입 앨리어스는 원시값, 유니온 타입, 튜플 등도 타입으로 지정할 수 있다.
type Str = string;
const str1: Str = "Good";
const str2: Str = 5; // 에러
이런식으로 str만 오게끔 하는 것도 가능하고 (하지만 의미 없죠?)
type Lee = "Lee" | "LEE" | "lee" | "LeE";
const lee1: Lee = "LEE";
const lee2: Lee = "lee";
const lee3: Lee = "LEEE"; // 에러
원하는 문자열만 적게도 사용 가능하다. 이 기능은 유용해 보인다.
함수도 사용 가능하다.
type StrFunc = () => string;
const stringFunction: StrFunc = () => {
return "스트링 출력";
// return 5 에러
};
타입 내용으로 인터페이스를 사용해도 유용하다
type Shape = Square | Rectangle | Circle;
튜플로 타입 지정
type Tuple = [string, number];
const t: Tuple = ["1", 5];
인터페이스는 extends/implements 가 될 수 있지만 타입은 그렇지 못하다.
이런 점에서는 인터페이스가 유리하고, 유니온 또는 튜플을 사용할 때는type
이 유리할 수도 있다.