Sorbet 处理「;冰糕型;及;“宝石”;RBI文件

Sorbet 处理「;冰糕型;及;“宝石”;RBI文件,sorbet,Sorbet,我已经在Rails代码库中安装了Sorbet,并且看到了以下错误的许多实例: sorbet/rbi/sorbet-typed/lib/activerecord/all/activerecord.rbi:958: Method ActiveRecord::ConnectionAdapters::TableDefinition#column redefined without matching argument count. Expected: 3, got: 5 https://srb.help/

我已经在Rails代码库中安装了Sorbet,并且看到了以下错误的许多实例:

sorbet/rbi/sorbet-typed/lib/activerecord/all/activerecord.rbi:958:
Method ActiveRecord::ConnectionAdapters::TableDefinition#column redefined without matching argument count. Expected: 3, got: 5 https://srb.help/4010
     958 |  def column(
     959 |    name,
     960 |    type,
     961 |    index: nil,
     962 |    default: nil,
     963 |    **options
     964 |  ); end
    sorbet/rbi/gems/activerecord.rbi:5256: Previous definition
    5256 |  def column(name, type, **options); end
为了消除类型错误,我必须在其中一个文件中将
typed:true
更改为
typed:false
(这排除了一些不重叠的类型),或者我必须手动进入并删除/注释掉重叠的方法(这既耗时又脆弱)

我想知道是否有某种编程解决方案,我可以说“在发生冲突的情况下,使用具有更高算术性的方法”或“始终选择sorbet类型的定义”


同样,这是在Rails代码库中,但我认为手工生成和自动生成的RBI之间的任何冲突都会存在这种情况。

我编写了其中一些方法,不幸的是,由于“Shapes”(Sorbet的可键入散列的实验实现)不允许使用可选键,它们无法准确地表示这些方法。因此,在sorbet类型和sorbet的自动生成文件之间,许多方法的算术性(尤其是Rails中的复杂内容)是不同的

我刚刚使用了
srb rbi suggest typed
来自动设置我的repo中文件的类型,它只是将这些文件标记为false。据我所知,即使文件被标记为false,来自sorbet typed的类型信息仍然会被使用(尽管我可能应该进一步研究以验证情况是否如此)

不幸的是,目前我还没有更好的解决方案,但到目前为止,仅仅使用建议类型似乎就足够了