如何在使用 sorbet 的项目中包含 Enumerable?

How do I include Enumerable in a project using sorbet?

如果我定义一个可枚举的class like

# typed: strict

class MyEnumerable
  extend T::Generic
  extend T::Sig
  include Enumerable

  Elem = type_member

  sig {override.params(blk: T.proc.params(arg: Elem).returns(BasicObject)).returns(NilClass)}
  def each(&blk)
  end
end

这种类型检查 srb tc 就好了,但是如果我尝试 运行 srb rbi update,我会得到一个错误。检查 reflection.json.err

reflection.rbi:15619: Type variable `Elem` needs to be declared as `= type_member(SOMETHING)` https://srb.help/5018
       15619 |  Elem = ::T.let(nil, ::T.untyped)
                ^^^^

Elem 声明更改为(即它的定义方式 in the Enumerable rbi

    Elem = type_member(:out)

现在 srb tc 给我错误

Classes can only have invariant type members https://srb.help/5016
     9 |    Elem = type_member(:out)
            ^^^^^^^^^^^^^^^^^^^^^^^^
Errors: 1

Elem 声明更改为

    Elem = type_member(:invariant)

现在 srb tc 给我错误

Invalid variance kind, only :out and :in are supported https://srb.help/4011
     9 |    Elem = type_member(:invariant)
                               ^^^^^^^^^^
Errors: 1

如何在项目中使用 sorbet 实现 Enumerable class,以便在 运行 宁 srb rbi update 时既能进行类型检查又不会出错?

这看起来像是 Sorbet 中的错误。我不知道解决方法。请在 https://github.com/sorbet/sorbet 提交问题。不幸的是,我们的资源有限,因此必须决定如何确定优先级。