问题标签 [sorbet]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ruby - 如何解决 URI.encode_www_form({"q": "ruby"}) 中的 sorbet 强类型检查器错误“此代码未键入”
如何解决下面代码中的 sorbet strong type-checker error “this code is untyped”?
错误信息
谢谢你的回答。
sorbet - 忽略冰糕中的一行
如何忽略特定行的类型检查?
在这个例子中 self.params is not nil
,但 sorbet 仍然显示错误。如何禁用特定行的类型检查器?
UPD:再举一个例子
sorbet - 为什么不推断 T::Boolean 的真假?
Sorbet 推断出 的类型为true
TrueClass, 的类型false
为FalseClass
。如果它改为推断,通常会很好T::Boolean
。为什么不使用特殊情况true
并false
改为使用类型T::Boolean
?
可以使用类型注释来解决此问题,T.let(true, T::Boolean)
例如初始化变量,但不必提供这些额外信息会很好。
false
循环中对to的赋值var
会导致引发错误,因为类型var
正在从TrueClass
to更改FalseClass
。
sorbet - Sorbet:如何为动态生成的方法添加签名?
我正在使用https://github.com/kenn/active_flag和https://github.com/chanzuckerberg/sorbet-rails
这是它的 rbi 的样子:
我添加的最后一点(扩展 AR::Base),其余部分srb rbi gems
自动生成。
为了实际使用活动标志,我在我的模型中执行此操作:
flag :visible_to, [:employee, :manager, :admin]
visible_to
是一个整数列。Sorbet Rails 已经这样输入了它:
我可以更改此定义,但它是一个自动生成的文件,我认为更改会丢失。因此,我尝试的下一件事是在使用该方法的位置正上方添加一个 sig:
这里的问题是 Sorbet 失败了,因为我“定义”的方法没有返回任何东西。我知道这很好,因为它会在flag
被调用时被覆盖(它在define_method
内部使用),但我不知道如何将它传达给 Sorbet。
所以我的问题是。告诉 Sorbet 这个方法ActiveFlag::Value
一旦定义就会返回的最好方法是什么,最好不要手动更改自动生成的文件?
顺便提一句。我试图查看enum
Rails 中的类型是如何处理的……看起来还没有完成sorbet-typed
。可能出于同样的原因。
ruby - 为什么 Sorbet 认为我在 RBI 文件中提供显式签名的方法不存在?
我的一个课程依赖于 gem Geokit,它不提供自己的 RBI 文件,也不包含在sorbet-typed
repo 中。我自己为它手写了几个 RBI 文件,包括我在自己的代码中使用的方法的签名。
当我尝试将依赖 Geokit 的类更改为 时typed: true
,它抱怨我使用的方法不存在。
类类型检查在typed: false
.
geokit.rbi
bounds.rbi
库/平台/x.rb
我得到的错误如下:
ruby - Sorbet - 从泛型类继承时的具体类型
如何指定String
泛型类型?
ruby - 将 Sorbet RBI 文件添加到 gems
我正在研究将 Sorbet RBI 文件添加到我维护的 gem 中可能需要什么,并且我正在尝试为此找出正确的过程。不过,我不想让 Sorbet 作为 gems 的运行时依赖项,所以这意味着将所有类型信息都放在一个单独的 RBI 文件中。
我目前对此的疑问是:
- 我是否将自己的
rbi
文件添加到,比如说,./sorbet/rbi/gemname.rbi
?如果我将 Sorbet 打包到已发布的 gem 文件中,那是默认情况下会出现的地方吗? - 我应该在已发布的 gem 文件中包含其他自动生成的 RBI 文件(在
./sorbet/rbi/sorbet-typed
和中)吗?./sorbet/rbi/hidden-definitions
- 我是否应该在我的 gem 文件中包含
typed
pragma 注释,即使类型信息被分离到一个 RBI 文件中?如果是这样,它应该反映注释所在文件中存在的类型信息,还是应该反映通过 RBI 文件可用的类型信息?
ruby - 为什么“srb tc”没有为我的 RSpec 测试找到“expect”和“eq”方法?
我正在一个实验性开源项目(ruby_crystal_codemod)中试用 Sorbet。我不知道如何让类型检查与嵌套测试项目中的一些 RSpec 测试一起工作。当我运行时srb tc
,我看到一些类型检查错误,如下所示:
您应该能够运行以下命令来重现类型错误:
您应该会看到以下类型错误:
spec/fixtures/rspec_project/sorbet/rbi/gems/rspec-core.rbi
等处的 RBI 文件有问题吗?
sorbet - 我应该如何解决自动生成的 RBI 文件中的合并冲突?
似乎一些合并冲突甚至在errors.txt文件中......
可以只删除所有自动生成的文件然后重新生成它们吗?