타입 앨리어스(type aliases)를 알아보자!
형태가 비슷한 두개의 객체가 있습니다.
const user1 = { name: "김개발", age: 28 } const user2 = { name: "이개발", age: 25 }
여기서 객체의 타입을 지정해 주고 싶다면
const user1:{name:string; age:number;} = { name: "김개발", age: 28 } const user2:{name:string; age:number;} = { name: "이개발", age: 25 } // BAD
이렇게 해주면 되지만 객체가 추가될 때마다 매번
타입을 지정해주기가 번거롭습니다.
이럴 땐 type aliases 를 통해 쓸 데 없이 길어진 코드를 줄이고 가시성을 높여줄 수 있습니다.
type Person = { name: string; age: number; } const user1:Person = { name: "김개발", age: 28 } const user2:Person = { name: "이개발", age: 25 } // NICE!
UnionType에 타입 앨리어스 주기
type studentId = number | null; let id:studentId = null;
응용해서 교차타입에 적용해보자
type Person = { name: string; age: number; } const user1:{name:string; age:number;} = { name: "김개발", age: 28 } const user2:{name:string; age:number;} = { name: "이개발", age: 25 } type studentId = number | null; type Student = { name: string; age: number; id: number | null; } // BAD
Student 는 Person과 중복되고 id 부분은 StudentId와 동일하니
type Person = { name: string; age: number; } const user1:{name:string; age:number;} = { name: "김개발", age: 28 } const user2:{name:string; age:number;} = { name: "이개발", age: 25 } type studentId = number | null; type Student = Person & { id: studentId } // Nice
Tuple 타입 같은 경우엔
type TupleType = [number, string]; const tuple1:TupleType = [10, "hello"]; const tuple2:TupleType = [20, "hi"]
반복되는 타입 정의를 정리를 해놓음으로써
가독성도 좋아지고 중복되는 부분도 없어진다
union타입이나 교차타입등을 사용해서 타입끼리도 응용해서 사용가능하다!