reusable contracts

제네릭 클래스와 인터페이스

제네릭 클래스와 인터페이스는 데이터의 구체 타입은 호출자가 정하고, 구조와 동작은 한 번만 정의합니다.

제네릭 클래스

상태 타입을 외부에서 결정

클래스 내부 배열이나 캐시가 어떤 타입을 담을지 인스턴스 생성 시 정합니다.

class Stack<T>
제네릭 인터페이스

응답 구조 재사용

data의 모양만 바뀌고 meta나 error 구조는 같은 API 타입을 만들 수 있습니다.

interface Response<T>
제약 결합

필요한 속성 보장

저장소나 테이블처럼 id가 필요한 타입은 최소 속성을 제약으로 둡니다.

T extends { id: string }
활용 영역

컴포넌트와 클라이언트

테이블, 드롭다운, API 클라이언트처럼 자료형이 다양한 모듈에 잘 맞습니다.

Table<Row>
타입 인자 인스턴스마다 T가 무엇인지 명확해야 메서드 반환 타입이 안정됩니다.
공개 메서드 push와 pop처럼 T를 받거나 반환하는 위치를 일관되게 설계합니다.
기본값 자주 쓰는 타입이 있으면 제네릭 기본 타입도 고려할 수 있습니다.

제네릭 구조는 한 번 만든 클래스와 인터페이스를 여러 도메인 모델에 안전하게 재사용합니다.