← Back to NOTES 🌰 ← Back to Effective TypeScript
코드에서 DRY(Don't Repeat Yourself) 원칙을 적용하듯이 타입에도 동일하게 적용해야 한다. 타입에 이름을 붙이고, extends로 인터페이스를 확장하며, Pick, Partial, ReturnType 같은 제네릭 타입과 keyof, typeof, 인덱싱, 매핑된 타입을 활용하여 타입 간 반복을 줄일 수 있다.
코드에서 반복을 줄이듯이 타입에서도 반복을 줄여야 한다. 타입 중복은 코드 중복만큼 많은 문제를 야기한다.
[k in 'userId' | 'pageTitle']: State[k] 형태extends를 사용하여 제너릭 타입을 제한(constraint)할 수 있다.
// 반복되는 타입 - 나쁜 예시
interface Person {
firstName: string;
lastName: string;
}
interface PersonWithBDay {
firstName: string;
lastName: string;
bday: Date;
}