Rubyの型に入門する

最近、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)