들어가며

네! 이번 8-1 워크북은 별 내용은 없고, 중앙 워크북 8주차의 내용을 TS로 진행해보려고 해요.

JS 기반의 코드에 타이핑을 끼얹으면 어떤 느낌인지 파악하는 챕터라고 할 수 있을것같네요.

그럼 바로 시작해 볼까요?

API 응답 통일

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
}