scrimba
Learn TypeScript
Add ids to pizzas
Go Pro!Bootcamp

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

Add ids to pizzas
AboutCommentsNotes
Add ids to pizzas
Expand for more info
index.ts
run
preview
console
type Pizza = {
name: string
price: number
}

type Order = {
id: number
pizza: Pizza
status: "ordered" | "completed"
}

const menu = [
{ name: "Margherita", price: 8 },
{ name: "Pepperoni", price: 10 },
{ name: "Hawaiian", price: 10 },
{ 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
}

addNewPizza({ name: "Chicken Bacon Ranch", price: 12 })
addNewPizza({ name: "BBQ Chicken", price: 12 })
addNewPizza({ 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)
Console
!
"Anchovy does not exist in the menu"
,
"Menu:"
,
[
{name:
"Margherita"
, price:
8
}
,
{name:
"Pepperoni"
, price:
10
}
,
{name:
"Hawaiian"
, price:
10
}
,
{name:
"Veggie"
, price:
9
}
,
{name:
"Chicken Bacon Ranch"
, price:
12
}
,
{name:
"BBQ Chicken"
, price:
12
}
,
{name:
"Spicy Sausage"
, price:
11
}
]
,
"Cash in register:"
,
131
,
"Order queue:"
,
[
{id:
1
, pizza:
{name:
"Chicken Bacon Ranch"
, price:
12
}
, status:
"completed"
}
,
{id:
2
, pizza:
{name:
"Pepperoni"
, price:
10
}
, status:
"completed"
}
,
{id:
3
, pizza:
{name:
"Veggie"
, price:
9
}
, status:
"ordered"
}
]
,
/index.html
-2:38