是否有一种方法来检查ruby/sorbet中的类型符号?
我实际上想在某个表单中显示这些值,而不是硬编码像"this can be nil or a string"这样的值,我想使用sig { ... }
定义的代码。
伪代码示例:
class User
extend T::Sig
sig { returns(T.nilable(String)) }
def foo
...
end
end
Sorbet.return_type(User, :instance_method, :foo) # returns '[nil, String]' or similar
我相信这就是我要找的:
T::Utils.signature_for_method
在行动:
T::Utils.signature_for_method(User.new.method(:daily?)).return_type
=> #<T::Types::Union:0x0000000132198da8
@types=[#<T::Types::Simple:0x0000000132198f60 @name="TrueClass", @raw_type=TrueClass>, #<T::Types::Simple:0x0000000132198e98 @name="FalseClass", @raw_type=FalseClass>]>