@@ -80,7 +80,39 @@ El uso de literales es recomendado para un conjunto de valores fijos y acotados.
## Helpers y Tipos Utilitarios
**`type guards`**: Hacer uso de estas funciones que validan y reducen el tipo de un valor. Suelen tener esta firma: `(myValue: unknown): myValue is Type`. Son cruciales para trabajar con datos que no tienen un tipo seguro.
**Type Guards**: Son funciones especializadas que validan y refinan el tipo de un valor en tiempo de ejecución. Estas nos sirven para retener la info del tipo en la ejecución y tienen la firma característica `(myValue: unknown): myValue is Type`, donde el valor de retorno booleano determina si TypeScript debe tratar el valor como el tipo especificado. Son fundamentales para trabajar de forma segura con datos de origen incierto, como respuestas de APIs, entrada del usuario, o cualquier valor de tipo unknown o any
console.log(`Invocando: ${entity.toUpperCase()}`);// ✅ TypeScript sabe que es string
}elseif(isDemon(entity)){
console.log(`${entity.name} aparece con poder ${entity.powerLevel}`);// ✅ TypeScript sabe que es Demon
}
}
// ejecución
summonEntity("BELZEBÚ");// → "Invocando: BELZEBÚ"
summonEntity({name:"Asmodeo",powerLevel:666});// → "Asmodeo aparece con poder 666"
```
**`Partial`, `Pick`, `Omit`, and shit...**: Los tipos utilitarios de TypeScript son poderosos. En lugar de crear un tipo nuevo cada vez que necesitas una variante de un tipo ya existente, usar utilitarios.