A CQRS implementation with TypeScript