【问题标题】:Sorbet not picking up obvious mismatch of Hash signature冰糕没有发现哈希签名明显不匹配
【发布时间】: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)

Playground Link

我希望 Sorbet 能够识别传递的哈希值参数错误。如何正确声明一个签名,以确保传递的哈希仅包含允许的值类型?

【问题讨论】:

  • 这可能不是最礼貌的意见,但没有人应该浪费时间使用冰糕。
  • @anothermh 是因为 Sorbet 还是一般对输入 ruby​​ 的抵抗?
  • 除了作为寻找问题的解决方案之外,对于它声称要解决的问题,它也是错误的解决方案。这是不必要的复杂性。这是不必要的性能开销。这是另一个 DSL。如果有人认为他们真的需要它,那么他们不应该使用 Ruby。名单还在继续。这不仅是不必要的;它积极浪费时间和资源。如果 Stripe 想把钱花在一个愚蠢而有缺陷的虚荣项目上,那对他们来说是好事,但我绝不会花钱让开发人员浪费时间制作更慢、更复杂、更难被其他人采用的东西。

标签: ruby sorbet


【解决方案1】:

很遗憾,这是 Sorbet 中的一个已知问题

https://github.com/sorbet/sorbet/issues/713

你做的一切都是对的,而冰糕让你失望了。随意关注这个问题,但我们估计这个特定的错误将很难修复,因为我们正在努力维护一些其他限制。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-19
    • 1970-01-01
    • 2017-12-01
    • 2021-04-23
    • 2021-04-25
    • 1970-01-01
    相关资源
    最近更新 更多