응용 - 별다방 프로그램
별다방 프로그램 만들기
별다방 프로그램 코딩 - 인터페이스 & 데이터 정의하기!
[코드] 유저 인터페이스 정의
interface User {
id: number;
name: string;
role: 'admin' | 'customer';
}
[코드] 음료 인터페이스 정의
interface Beverage {
name: string;
price: number;
}
[코드] 주문 인터페이스 정의
interface Order {
orderId: number;
customerId: number;
customerName: string;
beverageName: string;
status: "placed" | "completed" | "picked-up";
}
[코드] 데이터 정의
let beverages: Beverage[] = [];
let orders: Order[] = [];
> 고객인지 어드민인지 체크하는 함수 만들기
> 다음으로는 음료 목록에 음료를 새롭게 등록하는 addBevearage라는 함수를 만들자. 이 함수의 시그니처는 다음과 같다. 또한, 이 함수는 어드민만 호가능하다.
function addBeverage(user: User, name: string, price: number): void { ... }
> 음료 목록에서 음료를 삭제하는 removeBeverage라는 함수를 만들자. 이 함수의 시그니처는 다음과 같다. 마찬가지로, 이 함수도 어드민만 호출 가능하다.
function removeBeverage(user: User, beverageName: string): void { ... }
> 어드민 혹은 고객이면 볼 수 있는 음료 목록
function removeBeverage(user: User, beverageName: string): void { ... }
> 고객이 음료 주문을 할 때 판매하지 않는 음료를 사는 것을 막기 위한 음료 찾기 함수 만들기
[코드] 음료 찾기 함수
function findBeverage(beverageName: string): Beverage | undefined {
return beverages.find((beverage) => beverage.name === beverageName);
}
[코드] 음료 주문 기능 - 고객
> 음료 주문 기능 placeOrder라는 함수를 만들자. 이 함수의 시그니처는 다음과 같다. 이 함수는 고객만 호출 가능하고 엉뚱한 커피 주문은 막아야 하고, 주문 ID를 리턴해야 한다.
function placeOrder(user: User, beverageName: string): number { ... }
[코드] 음료 준비 완료 기능 - 어드민
> 고객이 주문한 음료가 준비가 완료되었다는 동작을 담당하는 completeOrder라는 함수를 만들자. 이 함수의 시그니처는 다음과 같고 이 함수는 어드민만 부를 수 있다.
function completeOrder(user: User, orderId: number): void { ... }
> 마지막으로 음료 수령하는 기능을 만들자.
[코드] 음료 수령 기능 - 고객
> 별다방 프로그램 코딩 - 테스트 코드를 포함한 전체 코드
Last updated