Spre array til argumenter i TypeScript


Jeg har et array av arrays, og jeg vil bruke hver som argumenter for en funksjon, for eksempel, i JavaScript kan det se slik ut:

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

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

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

Jeg har prøvd noe lignende i TypeScript, men jeg har problemer med å få det til å fungere. Her er en lenke til lekeplassen. Koden ser slik ut:

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));

Men med dette viser anropene til concatter feilen:

Expected 2 arguments, but got 0 or more.

Det ser ut som om jeg gjør en ganske grunnleggende feil her, men jeg har ennå ikke vært i stand til å finne noen informasjon om hva det kan være.

Svar #1

Du trenger bare å legge til en type for argumentene dine, slik at TypeScript vet at args-variabelen er et array med tupler som inneholder et tall og en streng.

Da vil det fungere:

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);

Relaterte artikler