Typescript: Brug af spread-operator, når mindst én parameter er påkrævet


Jeg lærer, hvordan man bruger rest-parameteren/spredningsoperatoren i TypeScript. Nu skal jeg skrive en funktion, der tager et array som parameter, og jeg vil bruge rest-operatoren. Dette er funktionen:

insert(elem: number, ...elems: number[])

Parameteren elem er der, fordi jeg har brug for, at arrayet har mindst ét element.

Så, givet et array som dette:

const numArray = [1, 2, 3, 4]

Hvordan kan jeg sende arrayet til funktionen? Jeg har prøvet følgende, men det gav mig en fejl:

insert(...numArray)

Jeg forstår fejlen, fordi numArray kan have fra 0 til N elementer, og funktionen har brug for mindst ét element, men jeg kender ikke den bedste løsning på det.

Er der nogen måde at opnå dette på?

Bemærk: insert-funktionen er en del af et bibliotek, som jeg er ved at udvikle, så jeg har brug for at gøre den så brugbar som muligt, og ikke afhængig af, hvordan brugeren vil anvende den

Svar #1

Du kan oprette en array-type med mindst ét (eller flere) elementer og sprede det:

function insert(...elem: [number, ...number[]]) { 
  // ...
}

Du kunne endda skrive en hjælpe-type f.eks.:

type AtLeastOne<T> = [T, ...T[]]

function insert(...element: AtLeastOne<number>) {
  //...
}

Relaterede artikler