Typescript-tuple spridningstyp
Vad är syftet och betydelsen med att definiera en typ på detta sätt..?
type AccountDetails1=[AccountDetails, ...AccountDetails[]];
Är det motsvarande denna unionstyp..?
type AccountDetails2=AccountDetails | AccountDetails[];
Svar #1
Det betyder helt enkelt att en array med typen AccountDetails1 måste vara en array av AccountDetails med en minsta längd på 1. Den första delen av tuplen anger att det första elementet i arrayen måste vara av typen AccountDetails, och den andra delen av tuplen betyder att arrayen kan innehålla noll eller fler AccountDetails-objekt i arrayen.
Kort sagt:
type AccountDetails1 = [AccountDetails, ...AccountDetails[]];
const arr1: AccountDetails1 = [AccountDetails]; // OK
const arr2: AccountDetails1 = [AccountDetails, AccountDetails]; // OK
const arr3: AccountDetails1 = []; // ERROR
Med andra ord, type AccountDetails2=AccountDetails | AccountDetails[]; betyder att det kan vara antingen av typen AccountDetails eller en array av AccountDetails med noll eller fler medlemmar:
type AccountDetails2 = AccountDetails | AccountDetails[];
const arr1: AccountDetails2 = [AccountDetails]; // OK
const arr2: AccountDetails2 = [AccountDetails, AccountDetails]; // OK
const arr3: AccountDetails2 = []; // OK
const obj1: AccountDetails2 = AccountDetails; // OK
Svar #2
type AccountDetails1 = [AccountDetails, ...AccountDetails[]];
Det betyder att variabler av typen AccountDetails1 måste vara en array av AccountDetails, och
type AccountDetails2 = AccountDetails | AccountDetails[];
Kan antingen vara ett AccountDetails eller en array av AccountDetails
