Arrays 如何在Typescript中声明变量类型的数组?

Arrays 如何在Typescript中声明变量类型的数组?,arrays,typescript,generics,Arrays,Typescript,Generics,假设我有一个变量x,它可以是任何类型: let x: number = 5 我想创建一个数组,用于存储x类型的值。在这种情况下,我需要一个编号[] 但是,x可以是任何类型:原语、对象、自定义类型等 我在找这样的东西: // Doesn't work let arr: <x>[] = [] //不起作用 设arr:[]=[] 我觉得泛型是这里的答案,但我想不出任何具体的方法来解决这个问题 有什么方法可以做到这一点吗?如果x是一个类型名,您只需使用x[]或数组 如果x是变量名或类似

假设我有一个变量
x
,它可以是任何类型:

let x: number = 5
我想创建一个数组,用于存储
x
类型的值。在这种情况下,我需要一个
编号[]

但是,
x
可以是任何类型:原语、对象、自定义类型等

我在找这样的东西:

// Doesn't work
let arr: <x>[] = []
//不起作用
设arr:[]=[]
我觉得泛型是这里的答案,但我想不出任何具体的方法来解决这个问题


有什么方法可以做到这一点吗?

如果
x
是一个类型名,您只需使用
x[]
数组

如果
x
是变量名或类似名称,则使用:
(x的类型)[
数组

声明let x:number;
设arr1:Array;
//  ^^^−−−−−−−−−−−− 这是数字[]
设arr2:(typeof x)[];
//  ^^^−−−−−−−−−−−− 这也是


请注意,TypeScript
typeof
运算符与值的JavaScript运算符不同。当
typeof
作为类型定义的一部分出现时,它是TypeScript
typeof
type操作符;当它相对于一个值出现时,它是JavaScript
typeof
操作符。

让arr:Array=[]
?据我所知,在JS
中,typeof
不适用于对象。它只返回
“object”
。我想要一些打字脚本结构的打字检查。这在Typescript中不同吗?@EnderShadow8 Typescript中的
typeof
与JavaScript中的
typeof
不同。这让人困惑,我认为这是一个设计缺陷,但事实就是如此
typeof
在TypeScript中使用时,特定的代码(因此,在类型注释中,而不是在运行时代码中)将执行类型查询并返回某个变量的类型。但是当在JS含义中使用时(因此,在运行时代码中),它将返回变量的JavaScript类型。它现在不必要地混淆了,因为TS重复使用了现有操作符的名称,所以它根据使用的位置做不同的事情。哦,我明白了。谢谢你的回复。我假设
typeof
是一个JS
typeof
,但事实上它的不同并没有破坏JS的兼容性。@EnderShadow8-对,这就是为什么我用一个链接调用了上面的类型运算符(不是值运算符)。我应该再加一条说明,说明它与JavaScript
typeof
操作符不同。