네! 이번 8-1 워크북은 별 내용은 없고, 중앙 워크북 8주차의 내용을 TS로 진행해보려고 해요.
JS 기반의 코드에 타이핑을 끼얹으면 어떤 느낌인지 파악하는 챕터라고 할 수 있을것같네요.
그럼 바로 시작해 볼까요?
JS에서는 다음과 같은 함수를 통해서 응답을 형식을 통일시켰죠?
// config/response.js
export const response = ({isSuccess, code, message}, result) => {
return {
isSuccess: isSuccess,
code: code,
message: message,
result: result
}
};
TS를 이용한다면 굳이 함수로 만들 필요 없이 다음과 같은 인터페이스를 만들어주기만 해도 괜찮아요.
// config/response.ts
type SuccessResponse<T> = {
isSuccess: true,
code: string,
message: string,
result: T
};
type FailedResponse = {
isSuccess: false,
code: string,
message: string
};
export type BaseApiResponse<T> = SuccessResponse<T> | FailedResponse;
그런데 Success와 Failed를 굳이 나눈 이유는 뭘까요? 아래처럼 그냥 합치면 되는게 아닐까요?
export default interface BaseApiResponse<T> {
isSuccess: boolean,
code: string,
message: string,
result: T
}