👻

オブジェクト指向に 階層構造を取り入れる #複数型クラス

2024/08/04に公開

階層型オブジェクト #シンプル!

エンティティ(実体)を .(=チェーン)で繋ぐだけ。

『階層型オブジェクト』 と名付けている。

ツリー状のオブジェクトの例:

ディレクトリ構成 #シンプル!

  • 推奨ディレクトリ: src/model/
    • 例: User.ts
    • 例: Media.ts
    • 例: Comment.ts
    • 例: Thumbnail.ts
    • 例: Room.ts
    • 例: Member.ts
    • 例: List.ts
    • 例: Content.ts

API (CRUD) 通信も思いのまま #シンプル!

上の例では、さらにAPI通信のCRUDを備えた抽象クラス(例: Document API CRUD)からextendsすればすべてのエンティティがCRUD通信を行えるようになる。 #拡張性

Comment extends CRUD {
  ...
Thumbnail extends CRUD {
  ...
User extends CRUD {
  ...

使う側 #シンプル!

// 更新
user.posts[n].comments[n].update({ title, body })
// 削除
user.delete();

// 関数型プログラミングも使える
users.filter(...)
users.find(...)

// Arrayを拡張してこんなことも
users.filter(...).orderBy('createdAt', 'desc')
user.posts[n].comments.filter(...).orderBy('createdAt')

複数型クラス

Discussion