У меня есть массив вида: [ 1, "message" ] .
Как бы я определить это в TypeScript?
У меня есть массив вида: [ 1, "message" ] .
Как бы я определить это в TypeScript?
Ответы:
Определение массива с несколькими типами в TypeScript
Используйте (string|number)[]демо типа объединения :
const foo: (string|number)[] = [ 1, "message" ];
У меня есть массив вида: [1, «сообщение»].
Если вы уверены, что всегда есть только два элемента, [number, string]вы можете объявить его как кортеж:
const foo: [number, string] = [ 1, "message" ];
Если вы рассматриваете его как кортеж (см. Раздел 3.3.3 спецификации языка ), то:
var t:[number, string] = [1, "message"]
или
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], ... ];
Мой TS TS жаловался на другие решения, поэтому решение, которое работало для меня, было:
item: Array<Type1 | Type2>
если есть только один тип, хорошо использовать:
item: Type1[]
Я остановился на следующем формате для ввода массивов, которые могут иметь элементы нескольких типов.
Array<ItemType1 | ItemType2 | ItemType3>
Это хорошо работает с тестированием и защитой типа. https://www.typescriptlang.org/docs/handbook/advanced-types.html#type-guards-and-differentiating-types
Этот формат плохо работает с тестированием или защитой типа:
(ItemType1 | ItemType2 | ItemType3)[]