javascript - Toveis array sendt til ny Map feiler i typescript


Kan ikke sende todimensjonal matrise til new Map i Typescript:

 const myArray: string[][] = [['DE', 'Germany'], ['AU', 'Austria']];
 const myMap = new Map(myArray);

Feiler for meg med TS2769: Ingen overbelastning samsvarer med dette kall. Gjør jeg noe feil her?

TS-versjon 3.9.9

Svar #1

Hvis du leter gjennom loggen, vil du se en feilmelding på

Målet krever 2 element(er), men kilden kan ha færre.

Problemet er at ['DE', 'Germany'] automatisk blir typeutvidet til string[] - et array av strenger, som kan ha to elementer, eller ett, eller ingen - men Map-konstruktøren krever at slike oppførings-arrayer har minst 2 elementer. Typeinformasjonen om at antallet elementer i arrayen er 2 går tapt.

Jeg ville lagt array-deklarasjonen på samme linje som new Map:

const myMap = new Map([['DE', 'Germany'], ['AU', 'Austria']]);

Et annet alternativ er

const arr: [string, string][] = [['DE', 'Germany'], ['AU', 'Austria']];

å vise at arrayen faktisk har 2 elementer i seg.

Merk også at du ikke kan ha et variabelnavn som starter med et tall - start det med noe annet, sannsynligvis en bokstav.

Relaterte artikler