0
点赞
收藏
分享

微信扫一扫

如何将类型分配给元组数组,其条目可能因元组而异?

可以使用泛型来解决这个问题。你可以为 foo 函数添加一个泛型参数,用于表示元组中第二个条目的类型。然后,对于 args 参数,你可以将其声明为一个包含元组的数组,其中每个元组都具有相同的类型,但是第二个条目的类型可以根据元组而变化。

下面是使用泛型的示例代码:

function foo<T>(args: Array<[number, T]>) {
  // Function implementation
}

foo([
  [1, 3],
  ["hello", "world"],
  [true, true],
  [2, 7]
]); // No error

foo([
  [1, 3],
  ["hello", 5], // Type error here
  [true, true],
  [2, 7n] // Type error here
]);

上述代码中,foo 函数的泛型参数 T 表示元组中第二个条目的类型。参数 args 声明为一个 Array<[number, T]> 类型,表示一个包含元组的数组,其中第一个条目的类型固定为 number,第二个条目的类型可以根据泛型参数 T 的实际类型而变化。

对于附录部分的问题,你可以使用类似的方法,并在泛型参数 T 前添加另一个类型参数 SomeType,用于表示第一个条目的类型。然后,你可以将 args 声明为一个包含元组的数组,其中每个元组都由 SomeTypeT 组成。

以下是附录部分的示例代码:

function foo<SomeType, T>(args: Array<[SomeType, T]>) {
  // Function implementation
}

foo([
  [{value: 1}, 3],
  [{value: "hello"}, 5], // Type error here
  [{value: true}, true],
  [{value: 2}, 7n] // Type error here
]);

上述代码中,foo 函数有两个类型参数 SomeTypeT,分别表示元组中第一个和第二个条目的类型。参数 args 声明为一个 Array<[SomeType, T]> 类型的数组,其中每个元组都由 SomeTypeT 组成。

举报

相关推荐

0 条评论