[Sorbet] Shapesを避けてT::Structを使う

ドキュメントに書いてある通りShapesには制限があるためT::Structを使用する。

TSのオブジェクト定義のような書き方だが、実験的な機能で制限が多く実用的でない。 現在のShapesは引数の型検査しかできない。

1
2
3
4
5
6
sig {params(x: {a: Integer, b: String}).void}
def foo(x)
  T.reveal_type(x[:a]) # T.untypedになってしまう

  x[:c] # 不存在のキーを参照しても型レベルでエラーにならない
end

利用しているライブラリの制約上引数がハッシュでなければならないときだけ使用することになる。ただし上記の制限により旨味は少ない。

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