最近、Rubyを書いてなかったので前から興味があった型に入門してみた。
型シグネチャを書く
型シグネチャファイルの拡張子は*.rbs
とのこと。型シグネチャの書き方はここを見たり、実際の例を見るとわかってくる。
class Pokemon
@id: Integer
@name: String
def initialize: (String name) -> void
end
型検査器をつかう
適当に空のクラスを用意して試してみる。
class Pokemon
end
Steepfile
というファイルに検査したいコードのディレクトリと型シグネチャが入っているディレクトリを指定する。
target :lib do
check "lib"
signature "sig"
end
ディレクトリ構成はこんな感じ。
% tree .
.
├── Gemfile
├── Gemfile.lock
├── Steepfile
├── lib
│ └── pokemon.rb
└── sig
└── pokemon.rbs
steep check
で型検査を実行できる。ちゃんとメソッドがないことと怒られるようになった。
% bundle exec steep check
lib/pokemon.rb:1:0: MethodDefinitionMissing: module=::Pokemon, method=initialize (class Pokemon)