Typescript-exercises 09

hotbreakb·2022년 6월 13일
0

typescript-exercises

목록 보기
9/12

문제

PowerUsers 만드는 건 별로였다. 이들은 다른 사람을 괴롭폈다. 우리는 돈과 사용자 모두 잃었다. 데이터베이스로 모든 것을 옮기는 작업을 연습할 것이다.

  • server API 포맷
    • success
    • error

UsersApiResponseAdminsApiResponse을 지우고 재너릭 타입을 추가하자.

코드

이렇게 하면 다 될 줄 알았는데 에러난다.

export type ApiResponse<T> = (
    {
        status: 'success';
        data:  Array<T> | Date;
    } |
    {
        status: 'error';
        error: string;
    }
);

🔻 공식적인 답안

export type ApiResponse<T> =
    | { status: 'success'; data: T; }
    | { status: 'error'; error: string; };

Array로 만들려고 하지 말고 있는 걸 그대로 내보내자.

export function requestCurrentServerTime(callback: (response: ApiResponse<boolean>) => void) {
    callback({
        status: 'success',
        data: Date.now()
    });
}

requestCurrentServerTime의 ApiResponse<여기에>number가 와야 하는지 매우 의문이었는데, Date.now()가 number이다.

export function requestCoffeeMachineQueueLength(callback: (response: ApiResponse<number>) => void) {
    callback({
        status: 'error',
        error: 'Numeric value has exceeded Number.MAX_SAFE_INTEGER.'
    });
}

requestCoffeeMachineQueueLength의 ApiResponse<여기에>number가 들어가야 하는진 아직도 모르겠다.

profile
글쟁이 프론트 개발자, 헬렌입니다.

0개의 댓글