Como saber o tipo de uma variável em TypeScript: typeof, instanceof e verificações personalizadas
Olá a todos! Comecei a estudar TypeScript recentemente e me deparei com um problema: como saber qual tipo uma variável tem durante a execução do programa? Em JavaScript comum, eu usava `typeof`, mas no TS isso nem sempre funciona como espero.
Aqui está um exemplo de código que me confunde:
```typescript
let value: string | number = "hello";
// Tentando verificar o tipo
if (typeof value === "string") {
console.log(value.toUpperCase()); // Funciona
}
value = 42;
if (typeof value === "number") {
console.log(value.toFixed(2)); // Funciona
}
// Mas com objetos é mais complicado
interface User {
name: string;
age: number;
}
interface Admin {
name: string;
role: string;
}
function processUser(user: User | Admin) {
// Como verificar se é User ou Admin aqui?
if (typeof user === "object") { // Isso não ajuda
// Como obter o tipo específico?
}
}
```
Eu entendo que TypeScript é uma extensão do JS, e os tipos existem apenas em tempo de compilação.