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}]@阿列克塞尔,太棒了。这正是我想要的。你能解释一下&在这里做什么吗?那是