我有一个形式为:[1,"message"]的数组。
如何在TypeScript中定义呢?
我有一个形式为:[1,"message"]的数组。
如何在TypeScript中定义呢?
当前回答
const myarray:(TypeA | TypeB)[];
或者更好地避免在多个地方更改,以防您需要添加另一个类型,创建类型
type MyMixedType = TypeA | TypeB;
const myarray: MyMixedType[];
其他回答
我使用这个版本:
exampleArr: Array<{ id: number, msg: string}> = [
{ id: 1, msg: 'message'},
{ id: 2, msg: 'message2'}
]
这和其他建议有点相似,但仍然很容易记住。
在TypeScript中定义多个类型的数组
使用联合类型(string|number)[] demo:
const foo: (string|number)[] = [ 1, "message" ];
我有一个形式为:[1,"message"]的数组。
如果你确定总是只有两个元素[number, string],那么你可以声明它为一个元组:
const foo: [number, string] = [ 1, "message" ];
你甚至可以为元组成员提供有意义的名字,例如id和text:
const foo: [id: number, text: string] = [ 1, "message" ];
[ 1, "message" ] as const ;
如果输入“as const”,则输入为
type const = readonly [1, "message"]
它的优点在于计算机可以精确地进行类型推断。
如果您对获取数字或字符串的数组感兴趣,则可以定义一个类型,该类型将接受数字或字符串的数组
type Tuple = Array<number | string>
const example: Tuple = [1, "message"]
const example2: Tuple = ["message", 1]
如果你期望一个特定顺序的数组(即数字和字符串)
type Tuple = [number, string]
const example: Tuple = [1, "message"]
const example2: Tuple = ["messsage", 1] // Type 'string' is not assignable to type 'number'.
如果你把它当作一个元组(参见语言规范的3.3.3节),那么:
var t:[number, string] = [1, "message"]
or
interface NumberStringTuple extends Array<string|number>{0:number; 1:string}
var t:NumberStringTuple = [1, "message"];