PowerUsers
만드는 건 별로였다. 이들은 다른 사람을 괴롭폈다. 우리는 돈과 사용자 모두 잃었다. 데이터베이스로 모든 것을 옮기는 작업을 연습할 것이다.
UsersApiResponse
와 AdminsApiResponse
을 지우고 재너릭 타입을 추가하자.
이렇게 하면 다 될 줄 알았는데 에러난다.
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
가 들어가야 하는진 아직도 모르겠다.