问题标签 [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 回答
253 浏览

ruby - 如何使用 gem Roo 修复 srb irb 更新错误?或任何选项如何从类型检查中跳过 roo?

我有需要使用 excel xls 的数据管道。我使用 gem roo 来读取 xlsx 并推送到一些 API 端点。我正在开始使用宝石冰糕的项目。执行 srb init 就可以了。但是当我添加 gem roo 时,它变成了错误。

我怎样才能告诉冰糕只跳过检查 roo gem?或者我该如何解决这个错误?

这是我的 Gemfile 列表。

这是冰糕的错误回溯

这是我的 lambda_function.rb

我希望 srb init 会返回成功。如果有任何帮助,那就太好了。

0 投票
0 回答
92 浏览

ruby - 如何在 sorbet 中指定全局变量的类型?

我有一个这样定义的全局变量:

在文件中,$rollout可以正确推断出的类型。但是,它被推断为T.untyped使用该变量的任何其他地方。我试过使用T.let,但它不起作用。

0 投票
1 回答
363 浏览

ruby - 带有类参数的函数的冰糕签名?

如何为以下archive_all函数编写签名?

冰糕运行

冰糕错误:

0 投票
0 回答
55 浏览

sorbet - 方法的多个签名

我正在尝试为promise.rbgem 添加类型。具体来说,我的目标是为Promise.all静态方法创建一个半体面的定义。

本质上,它是一个从[Promise[A], Promise[B]]到的数组上的平面图Promise[[A, B]]

我有一个项目的工作签名,我想硬编码几个不同的数量(比如,最多 10 个),因为我认为没有一种自动完成的好方法。

据我所知,我不能在我已经尝试过的方法定义上方放置一堆 sig。

信号看起来像这样(在 rbi - 没有实现):

对于两个项目,它看起来像这样:

有没有办法使这项工作?

0 投票
1 回答
243 浏览

sorbet - 是否可以为单个文件生成隐藏定义?

在大型 Rails 应用程序上运行srb init时,该进程使用大量内存 (10GB+) 并且需要很长时间(超过 10 或 15 分钟)才能完成。是否可以更新单个文件或子目录的隐藏定义以加快此过程?

我特别想到新的 gem 或文件更改需要更新隐藏定义但我不想重新初始化整个项目的情况。

0 投票
1 回答
118 浏览

c++ - 如何在 Centos 7 上构建 Sorbet(缺少 llvm_toolchain)

我正在尝试在 Centos 7.5 上构建 Stripe 的 Sorbet 二进制文件,并且安装了 bazel 0.28.1。

我尝试使用 构建bazel build //main:sorbet --config=dbg,但失败了:

看起来我只是缺少 llvm 和 llvm-toolset-7,但安装它们并没有帮助。我错过了什么?

0 投票
1 回答
575 浏览

ruby - 为什么 Sorbet 需要 sig 和 T.let 才能进行类型检查?

我将我的文件设置为typed: strict,并将我的initialize方法设置为采用浮点数组,但srb tc报告说我必须T.let在方法的主体中使用断言:

Sorbet 不能@c从签名中推断出类型吗?

0 投票
1 回答
403 浏览

ruby - 如何使用 Sorbet 为块编写类型签名?

我目前正在尝试向一些核心 Rails 方法添加类型,其中之一是respond_to. 它可以与块一起使用,如下所示:

我遇到的问题是如何准确输入,因为文档T.proc非常少。参数是的format一个实例ActionController::MimeResponds::Collector。块不需要返回任何东西(例如,它不像Array#select它评估块并且块返回布尔值)。

我认为这是你想要写签名的方式?:

(我们现在可以忽略这个*mimes论点,这并不重要)

看起来这很有效,但我只是想确保我理解T.proc应该使用的方式。

(请注意,可空的块存在导致回归的问题T.untyped,但这不是我目前所困惑的)

0 投票
1 回答
575 浏览

sorbet - Sorbet 中的高级 T.type_parameter 用法

要编写泛型方法,我只在 sorbet.run 上找到了这个示例sorbet.org/docs目前没有提及type_parameter。所以我有几个关于T.type_parameter.

  1. 限制父类型

如何指定只允许某种类型的子类型?(对于泛型类也一样,使用type_member) 例如,只允许“Enumerable”类型,所以我可以在该对象上调用“Enumerable”中的所有内容。

  1. 工厂方法

我有一个实例化给定类的对象的方法。(例如,因为它正在使用应保密的参数)。我怎样才能为此写签名?

→ 在 sorbet.run 上查看

0 投票
1 回答
498 浏览

sorbet - 在 Sorbet 中使用 raise / throw 的方法的语法

有没有办法指定方法可能会出现哪些异常raise,所以知道rescue可能需要哪些异常?

 

在 Java ( Doc ) 中,它看起来是这样的:

 

也许是这样的!?

→ 在 sorbet.run 上查看

 

 

不要混淆:通常的异常是raise ... rescue在 Ruby 中处理的。

但是您也可以在 Ruby 中使用throw对象和它们。catch

我不经常使用这个。实际上试图完全避免它。但是 Sorbet 也可能有这样的语法!?例如:

→ 在 sorbet.run 上查看