자동완성의 도움을 받으려고 dto 타입을 제네릭으로 이곳저곳에서 쓰는 걸 좋아하는 편인데
어떤 서비스에서 함수 호출에 따라서 응답의 key가 미묘하게 바뀌는 그런 api가 있거든
그걸 좀 동적으로 어떻게 표현할 수 없나?
예를 들면
환율 api가 있고 두 화폐의 심볼을 받아서 응답을 내려주는데 그 param이 뭐냐에 따라 응답이
{
USD-KRW: 1300
}
{
JPY-KRW: 800,
}
뭐 이런 식이라서 dto를 박아두고 쓸 수가 없어.
자동완성의 도움을 받으려고 dto 타입을 제네릭으로 이곳저곳에서 쓰는 걸 좋아하는 편인데
어떤 서비스에서 함수 호출에 따라서 응답의 key가 미묘하게 바뀌는 그런 api가 있거든
그걸 좀 동적으로 어떻게 표현할 수 없나?
예를 들면
환율 api가 있고 두 화폐의 심볼을 받아서 응답을 내려주는데 그 param이 뭐냐에 따라 응답이
{
USD-KRW: 1300
}
{
JPY-KRW: 800,
}
뭐 이런 식이라서 dto를 박아두고 쓸 수가 없어.
exchange-type : USD-KRW | JPY-KRW money-amount: 1300 이런식으로 키도 따로 프로퍼티로 빼면 안됨?
응답은 내가 정하는 게 아니라 그쪽에서 주는 걸 그대로 받아쓰는 입장이라서 그게 안되지 않나
직접 받는건 어쩔수 없지.. 그걸 한번 감싸서 처리해야지 뭐..
type CurrencyExchange = “USD-KRW” | “JPY-KRW”; 으로 키만 타입으로 빼고 Record<Partial<CurrencyExchange>, number>로 하면 안되나
크게 두가지인데 하나는 그냥 함수 시그니쳐를 오버로딩하면댐
나머지 하나는 리턴을 결정하는 인자를 제네릭 타입으로 받으면서 그 타입에 대한 매핑을 만들면댐 예를들어 %T extends 'USD' | JPY%(arg: T): { USD: TypeA; JPY: TypeB }[T] 이렇게
이분 팁이 정확함. TS 좀 아시는분
근데 굳이 그렇게까지 할필요 있나 싶음
타입으로 모든거 해결하다가 초가삼간 다태운다라는 생각
@ts-ignore
내가 이래서 ts 별로 안좋아함
호출 메소드를 따로 두는게 가장 나을거같은데 TS는 매핑해야할게 있으면 정말 골아픈데, 이건 런타임에 돌아가는게 js라 어쩔수가없다
말이 애매한가? 그냥 파라미터따라 메소드를 두개로 나누라는 뜻임
근데 백엔드쪽 dto는 어떻게되어있음? 그냥 널러블아니야? 그러면 프론트쪽에서도 옵셔널로 두면안되나 보통 dto는 양쪽에서 통일하지
설게문제 - dc App