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