"Method << не существует на T.class_of (A)" использование def_delegators с sorbet - PullRequest
2 голосов
/ 04 августа 2020

У меня есть код, который использует Singleton и Forwardable для делегирования некоторых методов внутреннему Hash.

class A
  include Singleton

  extend T::Sig

  sig { returns(T::Hash[T.untyped, T.untyped]) }
  attr_reader :stars

  class << self
    extend Forwardable
    def_delegators :instance, :<<, :[], :stars
    def_delegators :stars, :length
  end

  sig { void }
  def initialize
    @stars = {}
  end

  sig { params(identifier: String).returns(B) }
  def [](identifier)
    @stars[identifier]
  end
end

Я использую A << B.new вне класса A, а когда я запускаю be srb tc Я получаю Method << does not exist on T.class_of(A). Есть предложения или идеи, как я могу избавиться от этого предупреждения?

...