如何忽略特定行的类型检查?
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
答案 0 :(得分:0)
有几种方法可以做到这一点,所有这些方法都有不同程度的“哇,我真的吹走了很多静态类型信息。”
它们全部都记录在此处,位于“逃生舱口”下:
https://sorbet.org/docs/troubleshooting#escape-hatches
与许多其他渐进式类型检查器/ linters不同,Sorbet没有办法用注释使错误保持沉默,并且不太可能添加此类功能。取而代之的是,Sorbet允许通过以下任何一种来消除错误:
typed:
级别,即从typed: true
降低到typed: false
(后果请参见here)。T.unsafe
将某些表达式转换为T.untyped
。(使用注释来使类型检查器的错误静音通常是错误的解决方案,因为当发生类型错误时,它通常具有许多下游影响,可能会导致自身错误,由于真正的来源而变得更加混乱错误已被忽略!)