我可以写什么运行时代码来提取Sorbet定义的类型符号,并显示给用户?



是否有一种方法来检查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>]>

最新更新