【发布时间】:2019-10-25 19:02:46
【问题描述】:
给定以下代码:
# typed: strict
extend T::Sig
sig { params(x: T::Hash[String,String]).returns(NilClass) }
def foo(x); end
foo("foo" => 123)
我希望 Sorbet 能够识别传递的哈希值参数错误。如何正确声明一个签名,以确保传递的哈希仅包含允许的值类型?
【问题讨论】:
-
这可能不是最礼貌的意见,但没有人应该浪费时间使用冰糕。
-
@anothermh 是因为 Sorbet 还是一般对输入 ruby 的抵抗?
-
除了作为寻找问题的解决方案之外,对于它声称要解决的问题,它也是错误的解决方案。这是不必要的复杂性。这是不必要的性能开销。这是另一个 DSL。如果有人认为他们真的需要它,那么他们不应该使用 Ruby。名单还在继续。这不仅是不必要的;它积极浪费时间和资源。如果 Stripe 想把钱花在一个愚蠢而有缺陷的虚荣项目上,那对他们来说是好事,但我绝不会花钱让开发人员浪费时间制作更慢、更复杂、更难被其他人采用的东西。