Typer vid destrukturering av arrayer


function f([a,b,c]) {
  // this works but a,b and c are any
}

är det möjligt att skriva något sådant?

function f([a: number,b: number,c: number]) {
  // being a, b and c typed as number 
}

Svar #1

Detta är korrekt syntax för att destrukturera en array inuti en argumentlista:

function f([a,b,c]: [number, number, number]) {

}

Svar #2

Ja, det är det. I TypeScript gör du det med typer av array på ett enkelt sätt, genom att skapa tupler.

type StringKeyValuePair = [string, string];

Du kan göra vad du vill genom att namnge arrayen:

function f(xs: [number, number, number]) {}

Men du skulle inte namnge den interna parametern. En annan möjlighet är att använda destrukturering i par:

function f([a,b,c]: [number, number, number]) {}

Svar #3

Med TypeScript 4.0 kan tuplar nu ha etiketter

type Range = [start: number, end: number]

Relaterade artiklar