component)でコンポーネントを拡張することがあるが、TypeScriptでの実装をするにあたりお試しした備忘録。component)はcomponentを引数にとり、新しいコンポーネントを返す関数であり、コンポーネント間のコードを再利用可能にする際に利用される手法。以下のような感じのこと。hightOrderComponent(injectProps)(Component)という感じのもの。以下の点が確保されている必要がある。純粋関数であり参照透過性を保持することで副作用を避ける。HOC内でprototype拡張をしない。これはHOC利用側がHOCでのprototype変更の内部実装を知る必要が出てくる。renderメソッドないでHOCを使用しない。render内でHOCを使うことで毎回新しいコンポーネントが生成されるため、パフォーマンスに影響するため。{}>default引数を指定する。引数オブジェクトのnameメンバが省略されている場合は、default値(James)が渡される。引数自体がない場合は空のオブジェクトが渡るようになる。keywordを使いOptionsのパラメーターをオプショナルにする。これにより引数オブジェクトのメンバを把握しておく必要性がなくなる。Partialにより引数の型は以下のようになる。)}propsを追加してcomponentを拡張する。componet自体を別要素でwrapすることもできる。以下のようにして利用する。proxyするだけではなく、inheritanceすることも可能である。WrapedComponentHOC}継承することでComponentのlifecycleにアクセスできるようになる。HOCのパターンを触れてみた。