diff --git a/05-type-mapping/main.ts b/05-type-mapping/main.ts new file mode 100644 index 0000000..c1ac3cd --- /dev/null +++ b/05-type-mapping/main.ts @@ -0,0 +1,34 @@ +enum OpCode { + PING, + HELLO, + MOVE, +} + +type HelloEvent = { + name: string; +}; + +type MoveEvent = { + x: number; + y: number; +}; + +type OpArgsMapping = { + [OpCode.PING]: null; + [OpCode.HELLO]: HelloEvent; + [OpCode.MOVE]: MoveEvent; +}; + +class WebSocketClient { + public op( + op: TOp, + args: TArgs, + ) { + // ... + } +} + +function main() { + const client = new WebSocketClient(); + client.op(OpCode.HELLO, { name: "foo" }); +}