メインコンテンツまでスキップ

「design-patterns」タグのついた17記事

全てのタグを見る

Adapter — 構造的部分型が消す境界

TypeScript は構造的部分型なので、形が合っていれば明示的な implements なしにそのまま渡せます。それでも変換役を挟む必要が残るのはどこからかを見ます。

Composite — 再帰的な判別可能ユニオン

木構造を扱うとき、共通インターフェースを継承したクラス階層の代わりに、再帰的な判別可能ユニオンで表せます。ファイルシステムを題材にします。

State — 型で不正な遷移を潰す

状態ごとのクラスを作る代わりに、判別可能ユニオンで状態を表すと、その状態で呼べない操作を型で禁止できます。自動販売機を題材にします。

Strategy — 関数が第一級であること

振る舞いを差し替えるだけなら関数を渡せば済みます。それでもオブジェクトとして束ねたくなるのは、戦略が複数のメソッドや状態を持つときです。

Template Method — 継承とフックの注入

処理の骨組みを固定して一部だけ差し替える手段は、抽象クラスの継承だけではありません。フック関数を受け取る形との違いを整理します。

TypeScript デザインパターン

GoF の 23 パターンを現代の TypeScript で読み直す全 16 章のガイド。パターンごとに言語機能で代替できるかを判定し、クラスとして書き続ける価値が残る条件を並べて示します。

Visitor — 網羅チェックが代わりになる

判別可能ユニオンと never を使った網羅チェックがあると、Visitor のクラス階層を組まなくても「処理し忘れ」を型で防げます。構文木を題材にします。