有什么方法可以在冰糕中表达空哈希?
我具有定义良好的形状或设置为{}
的属性。显然T.type_alias({})
不起作用,因为{}
充当Hash
并被翻译为T::Hash[T.untyped, T.untyped]
。最简单的解决方案是使用类似T.nil
的东西,然后将其用作T::Hash[String, T.nil]
(获取不存在的键的值将始终返回nil
的值),但是没有这样的构造。
解决方法是更改代码以不接受此处的空哈希,并以不同的方式处理它。然后,可能会有T.nilable(SomeType)
。但是,我想保留现在的代码,只添加适当的类型签名。
答案 0 :(得分:1)
我认为您可以使用T::Hash[String, T.nilable(String)]
?但是,当我尝试使用sorbet.run时,似乎表明它不会正确地对该方法的参数进行类型检查。
我具有形状明确的属性
您可能要使用T::Struct来表示这一点。 Sorbet还没有对shape的大力支持。
T.nil
您可以使用NilClass。它实际上是一个Ruby类。