TypeScript 関数オーバーロードの実装パターン / PaPut