Typescript 通过更改对象数组中的对象来扩展接口
我有一个基本界面,如:Typescript 通过更改对象数组中的对象来扩展接口,typescript,Typescript,我有一个基本界面,如: interface base { property1: string property2: string; property3: [{ something1: string; something2: string; }]; } property1: string property2: string; property3: [{ something1: string; something2:
interface base {
property1: string
property2: string;
property3: [{
something1: string;
something2: string;
}];
}
property1: string
property2: string;
property3: [{
something1: string;
something2: string;
something3: number;
}];
property4: number;
我希望有一个如下界面:
interface base {
property1: string
property2: string;
property3: [{
something1: string;
something2: string;
}];
}
property1: string
property2: string;
property3: [{
something1: string;
something2: string;
something3: number;
}];
property4: number;
我能够使用extend实现propert4,比如:
我还阅读了关于如何扩展属性的内容,并且是这样做的:
type extendedProperty = base['property3'];
interface extendedPropertyInterface extends extendedProperty {
something3: number;
}
interface extended {
property3: extendedPropertyInterface;
property4: number;
}
这是行不通的。我看到extendedPropert是这样的类型
[{
something1: string;
something2: string;
}];
请注意数组括号。我如何获得我想要实现的目标
编辑:我无法更改基本接口。首先,此表单:[type]声明而不是数组,它应该是:type[]
至于你问的问题,你可以这样做:
interface ArrayItem {
something1: string;
something2: string;
}
interface Base<T extends ArrayItem = ArrayItem> {
property1: string
property2: string;
property3: T[];
}
interface ExtendedItem extends ArrayItem {
something3: number;
}
interface Extended extends Base<ExtendedItem> {
property4: number;
}
仿制药可能会有帮助啊!我应该这么说,但我不能改变基本接口。否则,我也会这么做。我将对此问题进行编辑。检查我修改后的答案您还可以重用基本类型:property3:[base['property3'][0]&{something3:number}]@阿列克塞尔,太棒了。这正是我想要的。你能解释一下&在这里做什么吗?那是