首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >typescript使用命名对象定义数组

typescript使用命名对象定义数组
EN

Stack Overflow用户
提问于 2020-09-03 21:39:20
回答 1查看 73关注 0票数 0

我正在努力为具有命名对象的数组定义类型。

以下是示例代码。

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

代码语言:javascript
复制
 let s =[12,3,4]
 s['data']={'x':0}
 console.log(s) // [12,3,4,data:{'x':0}]

现在,如何为s定义type

有谁能带路吗?

EN

回答 1

Stack Overflow用户

发布于 2020-09-03 21:43:51

最好不要这么做。但您可以通过使用来完成此操作,在本例中:

代码语言:javascript
复制
type AugmentedNumberArray = number[] & {
    data?: {x: number};
};

该类型既是一个number数组,也是一个具有可选data属性的对象,该对象可以是一个具有Numer值的x属性的对象。

Playground Link

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

不过,我建议定义一个同时具有命名属性(data或其他任何属性)和数字数组的对象,而不是

代码语言:javascript
复制
interface MyType {
    data?: {x: number};
    values: number[];
}

然后像这样使用它:

代码语言:javascript
复制
let s: MyType = {values: [12,3,4]};
s['data'] = {'x':0}; // Or idiomatically: s.data = ...
console.log(s);

Playground Link

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63724878

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档