我有一个形式为:[1,"message"]的数组。

如何在TypeScript中定义呢?


当前回答

如果在一个对象中处理具有多个值类型的数组,这对我来说是有效的。

 { [key: string]: number | string }[]

其他回答

我已经确定了以下格式,用于输入可以具有多种类型项的数组。

阵列望远镜< ItemType1 | ItemType2 | ItemType3 >

这可以很好地用于测试和类型保护。https://www.typescriptlang.org/docs/handbook/advanced-types.html#type-guards-and-differentiating-types

这种格式不适用于测试或类型保护:

(ItemType1 | ItemType2 | ItemType3) []

[ 1, "message" ] as const ;

如果输入“as const”,则输入为

type const = readonly [1, "message"]

它的优点在于计算机可以精确地进行类型推断。

我使用这个版本:

exampleArr: Array<{ id: number, msg: string}> = [
   { id: 1, msg: 'message'},
   { id: 2, msg: 'message2'}
 ]

这和其他建议有点相似,但仍然很容易记住。

我的TS lint抱怨其他解决方案,所以解决方案是为我工作:

item: Array<Type1 | Type2>

如果只有一种类型,可以使用:

item: Type1[]
const myarray:(TypeA | TypeB)[];

或者更好地避免在多个地方更改,以防您需要添加另一个类型,创建类型

type MyMixedType = TypeA | TypeB;
const myarray: MyMixedType[];