Angenommen, ich habe ein JavaScript-Array, das am Anfang ein bestimmtes Muster von verschiedenen Elementtypen hat, aber dann ein (Muster von) sich wiederholenden Elementtyp (en) am Ende zu einer beliebigen Anzahl von Wiederholungen.TypeScript: Wie kann ich einen Typ für ein JavaScript-Array mit unterschiedlichen Elementtypen deklarieren, aber keine feste Länge?
Wie kann ich einen TypeScript-Typ deklarieren, der mit diesem JavaScript-Array kompatibel ist?
interface A {
foo: Foo,
bar: Bar,
}
interface B {
baz: Baz
}
interface Bat {
// getArr(): [A, B, B, B], // tuple type puts types at specific indexes
// but only supports a fixed number of elements
// getArr(): Array<A | B>, // array type notation allows arbitrary number
// of elements but doesn't require them to be
// in specific positions
}
Edit:
weiter Um zu klären, ich bin das Experimentieren mit der Verwendung von externen Typoskript Erklärungen mit Vanille-JavaScript-Code Probleme in bestehendem Code JavaScript zu identifizieren. Ich verstehe, dass die Darstellung unklug sein kann; Wäre mehr Weisheit bei der Erstellung des ursprünglichen JavaScript-Codes verwendet worden, hätte ich dieses Abenteuer nicht unternommen.
Es ist auch nicht, was Arrays, Listen und dergleichen sind. Wenn es verschiedene Arten von Elementen gibt, sollten Sie wahrscheinlich ein Objekt verwenden und den verschiedenen Sammlungen Namen geben. – Pablo
TypeScript hat definitiv eine Unterstützung für nicht-homogene Typen in Arrays: https://github.com/Microsoft/TypeScript/blob/master/doc/spec.md#333-tuple-types – rakslice
@rakslice Tupel müssen nicht homogen sein. Aber Tupel sind keine Arrays. – user2864740