CLIツールを作っていると、必ずと言っていいほど書くことになるバリデーションコード。TypeScriptの型推論を活用したら、このコードをほぼ不要にできたお話をします。 きっかけは、いろんなプロジェクトのコードを読んでいて気づいたことでした。どのCLIツールにも、似たようなバリデーションコードが含まれているんです。例えばこんな感じです: if (!opts.server && opts.port) { throw new Error('--port requires --server flag'); } if (opts.server && !opts.port) { opts.port = 3000; // デフォルトポート } // --portに値がなかったら? // ポート番号が範囲外だったら? // そもそも... このコード自体は難しくありません。ただ、これがどこにでもあるとい

