TypeScript: cómo hacer una interfaz en la que sea obligatoria una de dos propiedades
¡Hola a todos! Estoy escribiendo una aplicación en TypeScript para procesar pedidos. Tengo una interfaz para un usuario que puede ser registrado (y entonces tiene `userId`) o invitado (y entonces tiene `guestToken`). Pero lo más importante es que el usuario debe tener exactamente uno de estos dos campos, no ambos a la vez ni ninguno.
Así es como intenté hacerlo:
```typescript
interface User {
name: string;
email: string;
userId?: number;
guestToken?: string;
}
```
Pero el problema es que TypeScript permite crear un objeto donde ambos campos faltan, o ambos están presentes al mismo tiempo. Por ejemplo:
```typescript
const user1: User = { name: "Anna", email: "a@mail.ru" }; // No tiene ni userId ni guestToken — no se lanza error
const user2: User = { name: "Iván", email: "i@mail.ru", userId: 123, guestToken: "abc" }; // Tiene ambos campos — tampoco hay error
```
Necesito que el compilador verifique estrictamente: o bien tiene `userId` (y no tiene `guestToken`), o bien tiene `guestToken` (y no tiene `userId`).
No answers yet.
Inicia sesión para dejar una respuesta