-
Notifications
You must be signed in to change notification settings - Fork 39
Open
Description
먼저 좋은 글을 써주셔서 감사하다는 인사로 시작하고 싶습니다. 집필해주신 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임을 알 수 있다.
제너릭 타입은 임의의 타입을 정의하고 사용할 때에 타입이 결정되는 거로 이해를 하고 있습니다.
제가 생각하는 코드의 흐름은 아래와 같습니다.
- 인터페이스
MyResponse는Data라는 타입 변수를 선언하고, 응답의 리소스는 타입Data를 가진다. user변수는 인터페이스로 선언된MyResponse형식의 제약조건이 따르고, 타입 변수에는User인터페이스가 할당되어 사용된다.- 따라서,
getUserApiCall함수는MyResponse<User>형식을 따르는 값을 리턴한다.
저와 같이 타입스크립트에 익숙하지 않은 독자들에게는 조금 혼란이 올 수도 있기에 다른 독자들에게도 도움이 되고자 하는 마음으로 이슈를 남기게 되었습니다. 최근 들어서는 많이 바쁘셔서 그런지 뒷부분에서 연재가 중단된 거 같은데 꼭 마무리가 잘 지어졌으면 하는 마음으로 응원하겠습니다!
superwoou and steadily-worked
Metadata
Metadata
Assignees
Labels
No labels