0

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

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

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

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

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

  sig do
    type_parameters(:A)
      .params(enum: [
        Promise[T.type_parameter(:A)], 
      ])
      .returns(Promise[[
        T.type_parameter(:A),
      ]])
  end
  def self.all(enum); end

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

  sig do
    type_parameters(:A, :B)
      .params(enum: [
        Promise[T.type_parameter(:A)], 
        Promise[T.type_parameter(:B)],
      ])
      .returns(Promise[[
        T.type_parameter(:A),
        T.type_parameter(:B),
      ]])
  end
  def self.all(enum); end

有没有办法使这项工作?

4

0 回答 0