Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/440.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用命名对象定义数组的typescript_Javascript_Arrays_Reactjs_Typescript_Types - Fatal编程技术网

Javascript 使用命名对象定义数组的typescript

Javascript 使用命名对象定义数组的typescript,javascript,arrays,reactjs,typescript,types,Javascript,Arrays,Reactjs,Typescript,Types,我正在努力定义该应用程序的类型 具有命名对象的数组 下面是示例代码 现在我必须在typescript中定义s的类型 let s =[12,3,4] s['data']={'x':0} console.log(s) // [12,3,4,data:{'x':0}] 现在,如何为s 请任何人引导一下,可能最好不要这样做。但您可以使用,在这种情况下: type AugmentedNumberArray = number[] & { data?: {x: number}; };

我正在努力定义该应用程序的类型 具有命名对象的数组

下面是示例代码

现在我必须在
typescript
中定义
s
的类型

 let s =[12,3,4]
 s['data']={'x':0}
 console.log(s) // [12,3,4,data:{'x':0}]
现在,如何为
s


请任何人引导一下,可能最好不要这样做。但您可以使用,在这种情况下:

type AugmentedNumberArray = number[] & {
    data?: {x: number};
};
这是一种类型,它既是一个数字数组,又是一个具有可选的
data
属性的对象,该属性可以是一个具有
x
属性和数字值的对象

但是,只要您执行类似于
s2=s.map(v=>v*2)
的操作,就会丢失
数据
属性,因为
map
(与所有数组方法一样)只处理对象中类似数组的部分,而不处理它可能具有的任何其他属性

相反,但是,我建议定义一个既有命名属性(
数据
或任何内容)又有数字数组的对象:

interface MyType {
    data?: {x: number};
    values: number[];
}
然后像这样使用它:

let s: MyType = {values: [12,3,4]};
s['data'] = {'x':0}; // Or idiomatically: s.data = ...
console.log(s);

虽然技术上可行,但阵列没有“命名对象”!你在学习typescript吗?typescript和Javascript。数组是一个对象,就像几乎所有东西一样,您可以在对象上设置任意属性,这就是为什么这在技术上是可行的。但是
数据
与数组没有任何关系。请参阅中的“存在数组
系列”
请展开它。。您将看到该数组的对象名为
data
ShivaSai-右@德塞兹(两次)说这是可能的。在大多数情况下这不是一个好主意。嘿,我可以自己定义数组的
数据吗?而不是在之后重新分配wards@ShivaSai-恐怕不行,无法使用数组文字创建非元素属性。您所能做的最好的事情如下:
s=Object.assign([12,3,4],{data:{x:0}})更多: