Skip to content

✨ Add typescript solution challenge-21 #100

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 2 commits into from
Sep 17, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
53 changes: 53 additions & 0 deletions 2024/21-callbacks/solution.ts
Original file line number Diff line number Diff line change
@@ -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);
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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) <br /> [![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) <br /> [![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) <br /> [![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) <br /> [![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) |
Expand Down
Loading