1

有什么方法可以在 Sorbet 中表达空哈希?

我的属性具有明确定义的形状或设置为{}. 显然T.type_alias({})不会起作用,因为它{}的工作原理Hash是被翻译成T::Hash[T.untyped, T.untyped]. 最简单的解决方案是拥有类似的东西T.nil,然后将其用作T::Hash[String, T.nil](获取不存在键的值将始终返回一个nil值),但没有这样的构造。

解决方法是更改​​代码以不接受那里的空哈希并以不同方式处理它。那么,就有可能拥有T.nilable(SomeType)。但是,我想保留现在的代码,只需添加适当的类型签名。

4

1 回答 1

1

我想你可以用T::Hash[String, T.nilable(String)]? 但是,当我尝试sorbet.run时,它似乎表明它不会正确检查该方法的参数。

我的属性具有明确的形状

您可能想使用T::Struct来表示它。冰糕还没有很好的形状支持。

您可以使用 NilClass。它实际上是一个 Ruby 类。

于 2019-07-19T18:58:15.320 回答