타입 별칭 (별명)

Aliasing Primitive

type MyStringType = string;

const str = 'world';

let myStr: MyStringType = 'hello';
myStr = str;

Aliasing Union Type

let person: string | number = 0;
person = 'Mark';

type StringOrNumber = string | number;

let another: StringOrNumber = 0;
another = 'Anna';

Aliasing Tuple

let person: [string, number] = ['Mark', 35];

type PersonTuple = [string, number];

let another: PersonTuple = ['Anna', 24];

Interface 와 차이점 (1)

type AliasEx = {
  num: number;
};

interface InterfaceEx {
  num: number;
}

declare function aliased(arg: AliasEx): AliasEx;
declare function interfaced(arg: InterfaceEx): InterfaceEx;

aliased('foo'); // { num: number; } 에 문제가 있다.
interfaced('foo'); // InterfaceEx 에 문제가 있다.