我正在努力为具有命名对象的数组定义类型。
以下是示例代码。
现在,我必须在typescript中定义s的类型
let s =[12,3,4]
s['data']={'x':0}
console.log(s) // [12,3,4,data:{'x':0}]现在,如何为s定义type
有谁能带路吗?
发布于 2020-09-03 21:43:51
最好不要这么做。但您可以通过使用来完成此操作,在本例中:
type AugmentedNumberArray = number[] & {
data?: {x: number};
};该类型既是一个number数组,也是一个具有可选data属性的对象,该对象可以是一个具有Numer值的x属性的对象。
但是,一旦执行类似s2 = s.map(v => v * 2)的操作,就会丢失data属性,因为map (与所有数组方法一样)只处理对象中类似数组的部分,而不处理它可能具有的任何其他属性。
不过,我建议定义一个同时具有命名属性(data或其他任何属性)和数字数组的对象,而不是:
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);https://stackoverflow.com/questions/63724878
复制相似问题