Definición de array con múltiples tipos en TypeScript: union types vs tuplas
¡Hola a todos! Recientemente comencé a estudiar TypeScript y me encontré con un problema al declarar un array que puede contener elementos de diferentes tipos.
Tengo una función que acepta un array de strings y numbers. Por ejemplo, quiero almacenar el ID (number) y el nombre (string) de un usuario en un mismo array. Así es como intenté hacerlo:
```typescript
let users = [1, "Alice", 2, "Bob"];
```
TypeScript infiere automáticamente el tipo `(string | number)[]`, lo que parece funcionar. Pero luego necesité controlar estrictamente el orden: primero un number, luego un string. Lo intenté así:
```typescript
let user: [number, string] = [1, "Alice"];
```
Aquí todo está bien. Pero ¿qué hago si quiero un array de estas tuplas? Escribí:
```typescript
let users: [number, string][] = [[1, "Alice"], [2, "Bob"]];
```
Pero luego surgió otra tarea: el array puede contener O strings O numbers, pero no ambos en un mismo elemento. Por ejemplo, una lista de tags: `["typescript", 42, "javascript", 100]`.
Pregunta: ¿cómo