scrimba
Learn TypeScript
Add type to orderId
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 type to orderId
AboutCommentsNotes
Add type to orderId
Expand for more info
index.ts
run
preview
console
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 = []

function addNewPizza(pizzaObj) {
menu.push(pizzaObj)
}

function placeOrder(pizzaName) {
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 = { id: nextOrderId++, pizza: selectedPizza, status: "ordered" }
orderQueue.push(newOrder)
return newOrder
}

/**
* Challenge: Teach TS what data type should be used for the
* orderId in the completeOrder function. Then check for any
* additional warnings TS comes up with and fix those.
*/

function completeOrder(orderId) {
const order = orderQueue.find(order => order.id === orderId)
order.status = "completed"
return order
}

addNewPizza({ name: "Chicken Bacon Ranch", cost: 12 })
addNewPizza({ name: "BBQ Chicken", cost: 12 })
addNewPizza({ name: "Spicy Sausage", cost: 11 })

placeOrder("Chicken Bacon Ranch")
completeOrder("1")

console.log("Menu:", menu)
console.log("Cash in register:", cashInRegister)
console.log("Order queue:", orderQueue)
Console
!
TypeError: Cannot set properties of undefined (setting 'status')
,
!
TypeError: Cannot set properties of undefined (setting 'status')
,
!
TypeError: Cannot set properties of undefined (setting 'status')
,
/index.html
-1:23