Skip to content

[예제 코드 수정] 제너릭 인터페이스 #28

@well-balanced

Description

@well-balanced

먼저 좋은 글을 써주셔서 감사하다는 인사로 시작하고 싶습니다. 집필해주신 ts-for-jsdev을 읽으면서 학습하는 데 많은 도움을 받고 있습니다.

글을 읽으면서 4.1 인터페이스 기초 챕터에서 의도와는 다르게 작성된 예제 코드가 있는 거 같아서 공유드리게 되었습니다.

interface MyResponse<Data> {
 data: Data;
 status: number;
 ok: boolean;
 /* ... */
}
inteface User {
 name: string;
 readonly height: number;
 /* ... */
}
const user: MyReponse<User> = await getUserApiCall(userId);
user.name; // 타입 시스템은 user.name이 string임을 알 수 있다.

제너릭 타입은 임의의 타입을 정의하고 사용할 때에 타입이 결정되는 거로 이해를 하고 있습니다.

제가 생각하는 코드의 흐름은 아래와 같습니다.

  • 인터페이스 MyResponseData라는 타입 변수를 선언하고, 응답의 리소스는 타입 Data 를 가진다.
  • user 변수는 인터페이스로 선언된 MyResponse 형식의 제약조건이 따르고, 타입 변수에는 User 인터페이스가 할당되어 사용된다.
  • 따라서, getUserApiCall 함수는 MyResponse<User> 형식을 따르는 값을 리턴한다.

저와 같이 타입스크립트에 익숙하지 않은 독자들에게는 조금 혼란이 올 수도 있기에 다른 독자들에게도 도움이 되고자 하는 마음으로 이슈를 남기게 되었습니다. 최근 들어서는 많이 바쁘셔서 그런지 뒷부분에서 연재가 중단된 거 같은데 꼭 마무리가 잘 지어졌으면 하는 마음으로 응원하겠습니다!

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions