2

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

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

在这个例子中 self.params is not nil,但 sorbet 仍然显示错误。如何禁用特定行的类型检查器?

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
4

1 回答 1

0

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

它们都记录在这里,在 Escape Hatches 下:

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

与许多其他渐进式类型检查器/linter 不同,Sorbet 没有办法通过注释来消除错误,并且不太可能添加这样的功能。相反,Sorbet 允许通过以下任一方式消除错误:

  • 降低typed:文件的级别,即从typed: truetyped: false(参见此处了解后果)。
  • 用于将T.unsafe某些表达式转换为T.untyped.

(使用注释来消除类型检查器的错误通常是错误的解决方案,因为当出现类型错误时,它通常会产生很多下游影响,可能会导致它们自己的错误,因为错误的真正来源变得更加混乱已经静音了!)

于 2019-09-04T17:34:57.430 回答