Projeto criado para a Aula 02 do Programa TIC-HUB 12 Full Stack.
npm install
npm run start
As classes/interfaces devem ter
- Category: id, name.
- Product: id, name, price, category (do tipo Category).
- User: id, username, email.
- Role: Deve ser estritamente "ADMIN" ou "CUSTOMER".
O carrinho deve implementar funções equivalentes a:
- getTotalItems(): Retorna a quantidade total de unidades (soma das quantidades) no carrinho.
- getFinalPrice(): Retorna o valor monetário total da compra.
Seção Desafio. Refatoração com High-Order Functions.
- Método addItem(product, quantity): Utilize .some() para verificar se o produto já existe no carrinho. Se existir, apenas aumente a quantidade; se não, adicione o novo item.
- Método getTotalItems(): Substitua o laço for ou forEach pelo método .reduce().
- Método getFinalPrice(): Refatore o cálculo do valor total utilizando também o método .reduce().
- Tipagem Completa: O código não deve conter o uso de any.
- Integridade da Role: O sistema deve impedir (em tempo de compilação) a atribuição de papéis diferentes de ADMIN ou CUSTOMER.
- Lógica de Acúmulo: O carrinho deve ser capaz de somar quantidades de produtos repetidos sem duplicar as entradas no array.
- Uso de HOF: (Para quem optar pelo desafio) O uso de .reduce() e .some() deve estar implementado corretamente.