Tengo una matriz de la forma: [ 1, "message" ].
¿Cómo definiría esto en TypeScript?
Tengo una matriz de la forma: [ 1, "message" ].
¿Cómo definiría esto en TypeScript?
Respuestas:
Definición de matriz con múltiples tipos en TypeScript
Use una (string|number)[]demostración tipo unión :
const foo: (string|number)[] = [ 1, "message" ];
Tengo una matriz de la forma: [1, "mensaje"].
Si está seguro de que siempre hay solo dos elementos [number, string], puede declararlo como una tupla:
const foo: [number, string] = [ 1, "message" ];
Si lo está tratando como una tupla (consulte la sección 3.3.3 de las especificaciones del lenguaje ), entonces:
var t:[number, string] = [1, "message"]
o
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], ... ];
Mi pelusa TS se quejaba de otras soluciones, por lo que la solución que me funcionaba era:
item: Array<Type1 | Type2>
si solo hay un tipo, está bien usarlo:
item: Type1[]
Me decidí por el siguiente formato para escribir matrices que pueden tener elementos de varios tipos.
Array<ItemType1 | ItemType2 | ItemType3>
Esto funciona bien con pruebas y protectores de tipo. https://www.typescriptlang.org/docs/handbook/advanced-types.html#type-guards-and-differentiating-types
Este formato no funciona bien con las pruebas o los protectores de tipo:
(ItemType1 | ItemType2 | ItemType3)[]