typescript - Deklarera ett okänt antal listor i en typalias
Låt oss säga att jag har en funktion som returnerar en lista, som innehåller ett variabelt antal listor, var och en av vilka först innehåller ett variabelt antal listor, och sedan ett enda objekt som den sista medlemmen av listan.
Här är ett par exempel på utdata:
output1 = [
[
[1, 2, 3],
{ x: 1, y: 2 }
],
[
[4, 5, 6],
{ x: 3, y: 4 }
],
[
[7, 8, 9],
{ x: 5, y: 6 }
]
];
output2 = [
[
[1, 2, 3],
[4, 5, 6],
[7, 8, 9],
// however many more lists there are
{ x: 1, y: 2 }
],
[
['a', 'b', 'c'],
['d', 'e', 'f'],
['g', 'h', 'i'],
// however many more lists there are
{ x: 3, y: 4 }
],
// however many more lists there are
];
Innehållet i listorna kan vara av typen any, men varje objekt har egenskaperna x och y, var och en av typen number.
Hur kan jag skapa ett typalias som på ett korrekt och specifikt sätt visar detta?
Just nu är detta vad jag har skapat:
type Output = [
[
any[], // this is what I need help with
{ x: number, y: number }
][]
]
Svar #1
Din struktur är inte väl utformad, varför använder du en array som huvudstruktur och inte ett objekt?
Är du fast med strukturen (t.ex.: det är ett resultat från ett tredjepartsbibliotek, eller ett JSON-resultat), eller kan du ändra den?
Om du kan ändra det föreslår jag att du gör det eftersom du kommer att kunna ha mer kontroll.
type Output = Array<Array<number[] | { x: number, y: number }>>;
let output1: Output = [
[
[1, 2, 3],
{ x: 1, y: 2 }
],
[
[4, 5, 6],
{ x: 3, y: 4 }
],
[
[7, 8, 9],
{ x: 5, y: 6 }
]
];
