TypeScript no te dejará hacer esa llamada: codificando el estado del protocol en el sistema de types
Cómo usar phantom types y parámetros `this` para convertir transiciones de protocol ilegales en errores de compilación en lugar de bugs en tiempo de ejecución.