type MyStringType = string;
const str = 'world';
let myStr: MyStringType = 'hello';
myStr = str;
let person: string | number = 0;
person = 'Mark';
type StringOrNumber = string | number;
let another: StringOrNumber = 0;
another = 'Anna';
긴 유니온 타입 에 별칭을 붙여서 쓰는 방식
길게 쓰는 걸 짧게 해주는 역할
let person: [string, number] = ['Mark', 35];
type PersonTuple = [string, number];
let another: PersonTuple = ['Anna', 24];
튜플 타입 에 별칭을 줘서 여러 곳에서 사용할 수 있게 한다.
마찬가지로 길게 쓰는 걸 짧게 해주는 역할
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 에 문제가 있다.
타입을 체크해보면, interface 는 해당 interface 의 이름으로 지칭이 되고,
type alias 는 alias 하는 대상으로 표기가 됩니다.
⇒ 옛날엔 그랬는데 지금은 잘 나온다