如何在TypeScript中为元组指定一个元组类型?

时间:2018-01-14 18:13:11

标签: typescript typescript-typings typescript2.0

给定函数类型:

interface Fun {
  (a: string, b: number): void
}

以下场景中有一个额外的参数:

const foo = (ctx: any, a: string, b: number) => {}

将其余的参数传递为RestParameters而不是再次输入它们变得很简单。

例如,使用一个实现Fun的函数并调用foo,该函数采用类似的参数:

以下作品:

const bar: Fun = (a, b) => {
  foo("calling from bar", a, b);
}

但是当使用rest参数并传播冗余的参数时,类型信息会丢失:

const bar2: Fun = (...params) => {
  // error here params is of type any[]
  foo("calling from bar2", ...params);
}

至少,这应该有效:

const bar3: Fun => (...params) => {
  if (
    params.length > 1 
    && typeof params[0] === "string" 
    && typeof params[1] === "number"
  ) {
    foo("calling from bar3", ...params);
  }
}

Try it in TypeScript playground

是否有可能在TypeScript中为休息参数获取元组类型[string, number]?如果是这样,怎么样?如果没有,我错过了什么吗?

0 个答案:

没有答案