Odpowiedzi:
Definiowanie tablicy z wieloma typami w TypeScript
Użyj (string|number)[]demo typu Union :
const foo: (string|number)[] = [ 1, "message" ];
Mam tablicę w postaci: [1, "wiadomość"].
Jeśli masz pewność, że zawsze są tylko dwa elementy [number, string], możesz zadeklarować je jako krotkę:
const foo: [number, string] = [ 1, "message" ];
Jeśli traktujesz to jako krotkę (patrz sekcja 3.3.3 specyfikacji języka ), to:
var t:[number, string] = [1, "message"]
lub
interface NumberStringTuple extends Array<string|number>{0:number; 1:string}
var t:NumberStringTuple = [1, "message"];
type NumberStringTuple = [number, string]
const W3COLORS: [[string, string, number, number]] = [ ["aliceblue", "#f0f8ff", 240, 248, 255], ... ];
Mój szarpacz TS narzekał na inne rozwiązania, więc rozwiązanie, które działało dla mnie, to:
item: Array<Type1 | Type2>
jeśli jest tylko jeden typ, można użyć:
item: Type1[]
Zdecydowałem się na następujący format do pisania tablic, które mogą zawierać elementy wielu typów.
Array<ItemType1 | ItemType2 | ItemType3>
Działa to dobrze w przypadku osłon testowych i typów. https://www.typescriptlang.org/docs/handbook/advanced-types.html#type-guards-and-differentiating-types
Ten format nie działa dobrze w przypadku testów lub zabezpieczeń typu:
(ItemType1 | ItemType2 | ItemType3)[]