忽略果汁冰糕中的一条线

时间:2019-09-04 16:56:10

标签: sorbet

如何忽略特定行的类型检查?

if self.params.present?
  self.params = self.params.gsub(/aaa/, "bbb")
end

在此示例中,self.params不是nil,但是冰糕仍然显示错误。 如何禁用特定行的类型检查器?

UPD:还有一个例子

class CC
  def a1
    a = open("123")
    return 123
  ensure
    if a
      p a # => This code is unreachable https://srb.help/7006. Why??
    end
  end
end

1 个答案:

答案 0 :(得分:0)

有几种方法可以做到这一点,所有这些方法都有不同程度的“哇,我真的吹走了很多静态类型信息。”

它们全部都记录在此处,位于“逃生舱口”下:

https://sorbet.org/docs/troubleshooting#escape-hatches

与许多其他渐进式类型检查器/ linters不同,Sorbet没有办法用注释使错误保持沉默,并且不太可能添加此类功能。取而代之的是,Sorbet允许通过以下任何一种来消除错误:

  • 降低文件的typed:级别,即从typed: true降低到typed: false(后果请参见here)。
  • 使用T.unsafe将某些表达式转换为T.untyped

(使用注释来使类型检查器的错误静音通常是错误的解决方案,因为当发生类型错误时,它通常具有许多下游影响,可能会导致自身错误,由于真正的来源而变得更加混乱错误已被忽略!)