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}})代码>更多: