将数组扩展为打字稿中的参数

Oli*_*ini 5 typescript

我有一个数组数组,我想将每个数组用作函数的参数,例如,在javascript中,它可能看起来像:

const args = [
    [1, 'a'],
    [2, 'b'],
];

const concatter = (first, second) => `${first}-${second}`;

const test = args.map(a => concatter(...a));
console.dir(test);
Run Code Online (Sandbox Code Playgroud)

我在打字稿中尝试过类似的操作,但是在使其工作时遇到了问题。这里是操场的链接。代码如下:

const args = [
    [1, 'a'],
    [2, 'b'],
];

const concatter = (first: number, second: string) => `${first}-${second}`;

const singleTest = concatter(...args[0]);
const test = args.map(a => concatter(...a));
Run Code Online (Sandbox Code Playgroud)

但是与此有关,concatter显示错误的调用:

Expected 2 arguments, but got 0 or more.

似乎我在这里犯了一个相当基本的错误,但我尚未能够找到有关可能是什么的任何信息。

Dan*_*iel 6

您只需要为您的 args 添加一个类型,以便 TypeScript 知道该args变量是一个包含数字和字符串的元组数组。

然后它将起作用:

const args: [number, string][] = [
    [1, 'a'],
    [2, 'b'],
];

const concatter = (first: number, second: string) => `${first}-${second}`;

const singleTest = concatter(...args[0]);

const test = args.map(a => concatter(...a));

console.log(test);
Run Code Online (Sandbox Code Playgroud)