问题标签 [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.

0 投票
1 回答
60 浏览

ruby - 如何使用 tc 命令使用特定的 RBI 文件

我在玩冰糕和我的宝石。我/rbis为 RBI 文件创建了自定义文件夹,并希望在srb tc命令中使用它来检查这个库而不复制文件。另外,我检查了文档,没有发现任何东西。

关于我该怎么做的任何想法?

0 投票
2 回答
1654 浏览

ruby - 如何使用带有 RSpec 模拟的冰糕类型检查?

我有一个具有冰糕类型签名定义的方法。尝试在使用 RSpec 的测试中模拟此方法时,出现类型不匹配错误。我正在尝试了解如何解决此问题,并且可以添加基于 RSpec 的测试而不影响冰糕类型检查。

测试代码:

错误:

0 投票
2 回答
395 浏览

ruby - 如何从混合模块中调用“self.class”?

我有一个模块要包含在其他类中。它使用Object#class方法,如下所示:(sorbet.run 链接

对此,冰糕说

现在它变得有趣了。7003 的错误参考确实描述了这可以防止要包含在 BasicObject 中的模块中的类型错误。很好,所以我包括对象,因为检查器告诉我:(sorbet.run 链接

该错误消息非常无用,并且链接页面#5032不存在。

我花了一段时间才意识到它试图告诉我我不能包含一个作为模块子类的类。对比 Ruby 的错误信息:

我怎样才能让我的代码在typed: true这里通过关卡?

0 投票
1 回答
422 浏览

ruby - “方法重新定义”警告:不清楚它为什么存在,不清楚我是否可以最终修复它

我将冰糕添加到我的一个宠物项目中:https ://github.com/Trevoke/SGFParser

当我运行测试时,我收到很多以下警告(这里是 travis-ci build 的链接):

/Users/trevoke/.rbenv/versions/2.6.0/lib/ruby/gems/2.6.0/gems/sorbet-runtime-0.4.4314/lib/types/private/methods/call_validation.rb:807:警告:方法重新定义;丢弃旧的 add_error

/Users/trevoke/.rbenv/versions/2.6.0/lib/ruby/gems/2.6.0/gems/sorbet-runtime-0.4.4314/lib/types/private/methods/_methods.rb:127:警告: add_error 的先前定义在这里

其中“add_error”是我的一种方法——其他警告显示不同的方法名称。

我想知道这是否完全属于冰糕一方,或者我是否可以做些什么来摆脱它们。

0 投票
2 回答
2267 浏览

ruby-on-rails - 冰糕 - 无法解决常数

在运行srb initsrb tc传入一个新的 Rails 项目后,我安装了 RSpec,srb tc现在有很多抱怨,包括:

如何解决此错误?

0 投票
1 回答
1859 浏览

ruby - 如何在 Sorbet 中为具有属性的哈希定义签名?

(请注意,这在 sorbet.run 上无法重现,据我所知,它只能用 Sorbet 的本地副本重现)

我希望我可以使用Typed Structs 功能来创建一个方法签名,其中一个参数是options哈希,但这不起作用:

本质上,当您对该文件进行类型检查时,它会抱怨传入哈希,而此时需要一个 Struct。我的问题是:如何为具有特定参数的哈希定义有效签名?结构显然在这里不起作用。虽然我没有尝试过 Shapes,但根据文档,它们非常有限,所以如果可能的话,我不想使用它们。

关于泛型的文档提到了散列,但似乎建议它们只能在散列的键和值都是相同类型的情况下使用(例如Hash<Symbol, String>,要求所有键都是符号,所有值都是字符串),并且不提供任何方法(据我所知)定义具有特定键的哈希。

谢谢!

0 投票
1 回答
658 浏览

ruby - 使用多个变量将 Sorbet 类型签名添加到 attr_reader/attr_writer

我有一个attr_reader提供多个变量的变量,如下所示:

我想为其添加类型签名,但 Sorbet 不支持多种返回类型,

是像这样拆分它们的唯一选择吗?:

0 投票
1 回答
198 浏览

sorbet - How do I install release build of sorbet?

I install sorbet according to their instructions on the GitHub README:

Install the dependencies

brew install bazel autoconf coreutils parallel Clone this repository

git clone https://github.com/sorbet/sorbet.git cd sorbet Build Sorbet

bazel build //main:sorbet --config=dbg

But when I run it, I got the following:

#xA;

I want to install the release build because I want to use a well supported sorbet so I go to their GitHub README again and see this:

--config=release-mac and --config=release-linux Exact release configuration that we ship to our users.

So I run this:

bazel build //main:sorbet --config=dbg --config=release-mac

But it end up with this line:

#xA;

I tried this too:

#xA;

But it end up with this line too:

#xA;

What should I do to install a release build of Sorbet?

0 投票
1 回答
110 浏览

ruby-on-rails - ruby sorbet 无法在 CentOS7 上运行

尝试在 CentOS7 上运行 srb tc 时出现以下错误。

CentOS7 有 glibc 2.17,更新这个库似乎太冒险了,因为它是最重要的库之一。我可以将我当前的操作系统与冰糕一起使用吗?

我的配置:

谢谢

0 投票
2 回答
449 浏览

ruby - 使用 Sorbet 的 ruby​​ 类型检查器会影响 ruby​​ 应用程序的性能吗?

也许是一个新手的问​​题,但如果你从不问你永远不会知道

在 RoR 应用程序上使用 Stripe 的 Sorbet ( https://sorbet.org/ ) 是否可以潜在地提高应用程序的性能?(性能意味着响应时间,而不是鲁棒性\运行时错误率)

我读了一些动态类型语言(在这种情况下尤其是 Javascript),发现如果我们继续发送一些函数(foo例如)相同类型的对象,引擎会对那个函数做一些优化工作,所以当它是用相同的类型再次调用,那里的解释工作会更快。

我想也许 ruby​​ 解释器做了类似的工作,这可能意味着类型检查可能会提高解释速度