Определение массива с несколькими типами в TypeScript У меня есть массив вида: [ 1, "message" ]. Как бы я определить это в TypeScript? Ответ 1 Определение массива с несколькими типами в TypeScript Используйте тип объединения (string|number)[] demo: const foo: (string|number)[] = [ 1, "message" ]; У меня есть массив вида: [1, "сообщение"]. Если вы уверены, что всегда есть только два элемента [number, string] вы можете объявить его как кортеж: const foo: [number, string] = [ 1, "message" ]; Ответ 2 Если вы рассматриваете его как кортеж (см. Раздел 3.3.3 спецификации языка), то: var t:[number, string] = [1, "message"] или же interface NumberStringTuple extends Array<string|number>{0:number; 1:string} var t:NumberStringTuple = [1, "message"]; Ответ 3 Мой TS TS жаловался на другие решения, поэтому решение, которое работало для меня, было: item: Array<Type1 | Type2> если есть только один тип, его можно использовать: item: Type1[] Ответ 4 Я использую эту версию: exampleArr: Array<{ id: number, msg: string}> = [ { id: 1, msg: 'message'}, { id: 2, msg: 'message2'} ] Это немного похоже на другие предложения, но все же легко и довольно хорошо запомнить. Ответ 5 Я остановился на следующем формате для ввода массивов, которые могут иметь элементы нескольких типов. Array<ItemType1 | ItemType2 | ItemType3> Это хорошо работает с тестированием и защитой типа. https://www.typescriptlang.org/docs/handbook/advanced-types.html#type-guards-and-differentiating-types Этот формат плохо работает с тестированием или защитой типа: (ItemType1 | ItemType2 | ItemType3)[] Ответ 6 Используйте Array<any> и наслаждайтесь!
Ответ 1 Определение массива с несколькими типами в TypeScript Используйте тип объединения (string|number)[] demo: const foo: (string|number)[] = [ 1, "message" ]; У меня есть массив вида: [1, "сообщение"]. Если вы уверены, что всегда есть только два элемента [number, string] вы можете объявить его как кортеж: const foo: [number, string] = [ 1, "message" ];
Ответ 2 Если вы рассматриваете его как кортеж (см. Раздел 3.3.3 спецификации языка), то: var t:[number, string] = [1, "message"] или же interface NumberStringTuple extends Array<string|number>{0:number; 1:string} var t:NumberStringTuple = [1, "message"];
Ответ 3 Мой TS TS жаловался на другие решения, поэтому решение, которое работало для меня, было: item: Array<Type1 | Type2> если есть только один тип, его можно использовать: item: Type1[]
Ответ 4 Я использую эту версию: exampleArr: Array<{ id: number, msg: string}> = [ { id: 1, msg: 'message'}, { id: 2, msg: 'message2'} ] Это немного похоже на другие предложения, но все же легко и довольно хорошо запомнить.
Ответ 5 Я остановился на следующем формате для ввода массивов, которые могут иметь элементы нескольких типов. Array<ItemType1 | ItemType2 | ItemType3> Это хорошо работает с тестированием и защитой типа. https://www.typescriptlang.org/docs/handbook/advanced-types.html#type-guards-and-differentiating-types Этот формат плохо работает с тестированием или защитой типа: (ItemType1 | ItemType2 | ItemType3)[]