From 21374c8b0ebdf4e37d46940f9041862a497b3539 Mon Sep 17 00:00:00 2001 From: Marco Cruz Date: Tue, 17 Sep 2024 03:24:01 +0000 Subject: [PATCH 1/2] :sparkles: Add typescript solution challenge-21 --- 2024/21-callbacks/solution.ts | 53 +++++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 2024/21-callbacks/solution.ts diff --git a/2024/21-callbacks/solution.ts b/2024/21-callbacks/solution.ts new file mode 100644 index 0000000..dbe3040 --- /dev/null +++ b/2024/21-callbacks/solution.ts @@ -0,0 +1,53 @@ +/* eslint-disable no-console */ + +// Definir el tipo para el callback +type Callback = (result: number) => void; + +function processNumber(number: number, callback: Callback): void { + const result = number * number; + callback(result); +} + +function printResult(result: number): void { + console.log('El resultado es:', result); +} + +// Usando la función con el callback +processNumber(5, printResult); + +// DIFICULTAD +type OrderCallback = (dish: string) => void; + +function processOrder(dish: string, onConfirmation: OrderCallback, onReady: OrderCallback, onDelivered: OrderCallback): void { + // Imprimir confirmación cuando empiece el procesamiento + onConfirmation(dish); + + // Simular un tiempo aleatorio entre 1 a 10 segundos para cada etapa del proceso + const randomDelay = (): number => Math.floor(Math.random() * 10000) + 1000; + + // Simular la confirmación del pedido + setTimeout(() => { + onReady(dish); // Notificar que el plato está listo + + // Simular la entrega del pedido + setTimeout(() => { + onDelivered(dish); // Notificar que el pedido ha sido entregado + }, randomDelay()); + }, randomDelay()); +} + +// Callbacks para manejar las etapas del pedido +function confirmOrder(dish: string): void { + console.log(`Pedido confirmado para: ${dish}`); +} + +function dishReady(dish: string): void { + console.log(`El plato ${dish} está listo.`); +} + +function orderDelivered(dish: string): void { + console.log(`El plato ${dish} ha sido entregado.`); +} + +// Usando la función con los callbacks +processOrder('Pizza Margherita', confirmOrder, dishReady, orderDelivered); From eff9a9b609ae6489a519846739eb7b6f07a4ecea Mon Sep 17 00:00:00 2001 From: Marco Cruz Date: Tue, 17 Sep 2024 03:25:06 +0000 Subject: [PATCH 2/2] :memo: Update README --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index b75d6db..d56d35d 100644 --- a/README.md +++ b/README.md @@ -70,7 +70,7 @@ npm run test 'year'/'folder-name'/solution.test.js | 18 | [Conjuntos](https://retosdeprogramacion.com/roadmap/) | 🟢 | [![JavaScript](https://img.shields.io/badge/-JavaScript-F7DF1E?style=flat&logo=javascript&logoColor=black)](./2024/18-conjuntos/index.js)
[![TypeScript](https://img.shields.io/badge/-TypeScript-3178C6?style=flat&logo=typescript&logoColor=white)](./2024/17-iteraciones/solution.ts) | | 19 | [Enumeraciones](https://retosdeprogramacion.com/roadmap/) | 🟡 | [![JavaScript](https://img.shields.io/badge/-JavaScript-F7DF1E?style=flat&logo=javascript&logoColor=black)](./2024/19-enumeraciones/index.js)
[![TypeScript](https://img.shields.io/badge/-TypeScript-3178C6?style=flat&logo=typescript&logoColor=white)](./2024/19-enumeraciones/solution.ts) | | 20 | [Peticiones HTTP](https://retosdeprogramacion.com/roadmap/) | 🔴 | [![JavaScript](https://img.shields.io/badge/-JavaScript-F7DF1E?style=flat&logo=javascript&logoColor=black)](./2024/20-peticiones-http/index.js)
[![TypeScript](https://img.shields.io/badge/-TypeScript-3178C6?style=flat&logo=typescript&logoColor=white)](./2024/20-peticiones-http/solution.ts) | -| 21 | [Callbacks](https://retosdeprogramacion.com/roadmap/) | 🟡 | [![JavaScript](https://img.shields.io/badge/-JavaScript-F7DF1E?style=flat&logo=javascript&logoColor=black)](./2024/21-callbacks/index.js) | +| 21 | [Callbacks](https://retosdeprogramacion.com/roadmap/) | 🟡 | [![JavaScript](https://img.shields.io/badge/-JavaScript-F7DF1E?style=flat&logo=javascript&logoColor=black)](./2024/21-callbacks/index.js)
[![TypeScript](https://img.shields.io/badge/-TypeScript-3178C6?style=flat&logo=typescript&logoColor=white)](./2024/21-callbacks/solution.ts) | | 22 | [Funciones de Orden Superior](https://retosdeprogramacion.com/roadmap/) | 🔴 | [![JavaScript](https://img.shields.io/badge/-JavaScript-F7DF1E?style=flat&logo=javascript&logoColor=black)](./2024/22-funciones-de-orden-superior/index.js) | | 23 | [Patrones de Diseño: Singleton](https://retosdeprogramacion.com/roadmap/) | 🟡 | [![JavaScript](https://img.shields.io/badge/-JavaScript-F7DF1E?style=flat&logo=javascript&logoColor=black)](./2024/23-singleton/index.js) | | 24 | [Patrones de Diseño: Decoradores](https://retosdeprogramacion.com/roadmap/) | 🟢 | [![JavaScript](https://img.shields.io/badge/-JavaScript-F7DF1E?style=flat&logo=javascript&logoColor=black)](./2024/24-decoradores/index.js) |