Explorer
project
index.html
index.js
index.ts
Dependencies
Bootcamp
Study group
Collaborate with peers in your dedicated #study-group channel.
Code reviews
Submit projects for review using the /review
command in your #code-reviews channel
type Pizza = {
id: number
name: string
price: number
}
type Order = {
id: number
pizza: Pizza
status: "ordered" | "completed"
}
const menu: Pizza[] = [
{ id: 1, name: "Margherita", price: 8 },
{ id: 2, name: "Pepperoni", price: 10 },
{ id: 3, name: "Hawaiian", price: 10 },
{ id: 4, name: "Veggie", price: 9 },
]
let cashInRegister = 100
let nextOrderId = 1
const orderQueue: Order[] = []
function addNewPizza(pizzaObj: Pizza) {
menu.push(pizzaObj)
}
function placeOrder(pizzaName: string) {
const selectedPizza = menu.find(pizzaObj => pizzaObj.name === pizzaName)
if (!selectedPizza) {
console.error(`${pizzaName} does not exist in the menu`)
return
}
cashInRegister += selectedPizza.price
const newOrder: Order = { id: nextOrderId++, pizza: selectedPizza, status: "ordered" }
orderQueue.push(newOrder)
return newOrder
}
function completeOrder(orderId: number) {
const order = orderQueue.find(order => order.id === orderId)
if (!order) {
console.error(`${orderId} was not found in the orderQueue`)
return
}
order.status = "completed"
return order
}
/**
* Challenge: create a new utility function called getPizzaDetail. It will take
* a parameter called `identifier`, but there's a twist: we want this identifier
* to be allowed to either be the string name of the pizza (e.g. "Pepperoni"),
* OR to be the number ID of the pizza (e.g. 2).
*
* Don't worry about the code inside the function yet, just create the function
* signature, making sure to teach TS that the `identifier` parameter is allowed
* to either be a string or a number.
*/
addNewPizza({ id: 5, name: "Chicken Bacon Ranch", price: 12 })
addNewPizza({ id: 6, name: "BBQ Chicken", price: 12 })
addNewPizza({ id: 7, name: "Spicy Sausage", price: 11 })
placeOrder("Chicken Bacon Ranch")
placeOrder("Pepperoni")
completeOrder(1)
placeOrder("Anchovy")
placeOrder("Veggie")
completeOrder(2)
console.log("Menu:", menu)
console.log("Cash in register:", cashInRegister)
console.log("Order queue:", orderQueue)