//숫자 리터럴로 유니온 타입으로 타입 지정 type Num = 1| 2 | 3 | 4 | 5;
//객체 리터럴 유니온 타닙으로 타입 지정 typs Obj = {a:1} | {b:2};
//함수 유니온 타입으로 타입지정 type Fuc = (()=>string) | (()=> void); //인터페이스 유니온 타입으로 타입 지정 typeShape = Square | Rectangle | Circle; //튜플로 타입지정 typeTuple = [string ,boolean]; constt:Tuple = ['',1] constf:Tuple = ['',''] //Error 지정한 타입만 가능하다.
인터페이스는 extends 또는 implements 될 수 있지만 타입 엘리어스는 extends , implements 될 수 없다. 즉 상속을 통해 확장이 필요하다면 타입 엘리어스보다는 인터페이스가 유리하다. 하지만 인터 페이스로 표현 할 수없거나 유니온 타입 또는튜플을 사용해야한다면 타입 엘리어스를 사용하는 것이 유리하다.
그러나 현시점에서는 type도 extends , implements 모두 사용 가능하도록 변경 되었다.
1 2 3 4 5 6 7 8 9 10 11 12 13
type test = { a:number; } interface inter extends test{ //ok b:number; } class Test implements inter{// ok public a = 1; public b = 1; } class Test2 implements test{ //ok public a = 1; }