[Ruby][Sorbet] T::Structは継承できない

Sorbetを使っている場合には型の恩恵を受けるためにHashの代わりにT::Structを使うことになるのですが継承はできません。つまり、下記のような簡潔な差分記述はできません(個人的にはこれが理想なのだが…)。

1
2
3
4
5
6
7
class A < T::Struct
  const :a, Integer
end

class B < A
  const :b, Integer
end

基本的にはコンポジションにするか、POROで継承する形で対応することになりますが、実際問題継承だと記述量が爆発していく(initializeのsigや引数がほぼコピペ、attr_readerも書く必要がある)のでコンポジションで対応するのが現時点では現実的対応になるかと思います。

ref

Built with Hugo
テーマ StackJimmy によって設計されています。