Cómo saber el tipo de una variable en TypeScript: typeof, instanceof y comprobaciones personalizadas
¡Hola a todos! Acabo de empezar a aprender TypeScript y me encontré con un problema: ¿cómo saber qué tipo tiene una variable durante la ejecución del programa? En JavaScript normal usaba `typeof`, pero en TS no siempre funciona como espero.
Aquí hay un ejemplo de código que me confunde:
```typescript
let value: string | number = "hello";
// Intento verificar el tipo
if (typeof value === "string") {
console.log(value.toUpperCase()); // Funciona
}
value = 42;
if (typeof value === "number") {
console.log(value.toFixed(2)); // Funciona
}
// Pero con objetos es más complicado
interface User {
name: string;
age: number;
}
interface Admin {
name: string;
role: string;
}
function processUser(user: User | Admin) {
// ¿Cómo verifico aquí si es User o Admin?
if (typeof user === "object") { // Esto no ayuda
// ¿Cómo obtengo el tipo concreto?
}
}
```
Entiendo que TypeScript es una extensión de JS y los tipos solo existen en la etapa