我有一个基本界面,如:
interface base {
property1: string
property2: string;
property3: [{
something1: string;
something2: string;
}];
}
我希望有一个界面:
property1: string
property2: string;
property3: [{
something1: string;
something2: string;
something3: number;
}];
property4: number;
我能够使用propert4
来实现extend
,如:
interface extended {
property4: number
}
我还读到了如何扩展属性,并且这样做:
type extendedProperty = base['property3'];
interface extendedPropertyInterface extends extendedProperty {
something3: number;
}
interface extended {
property3: extendedPropertyInterface;
property4: number;
}
这不起作用。我看到extendedPropert
属于
[{
something1: string;
something2: string;
}];
(注意数组括号)。我如何得到我想要达到的目标?
编辑:我无法更改base
界面。
答案 0 :(得分:1)
首先,此表单:[type]
声明a tuple而不是数组,它应该是: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;
}
由于你无法改变base
,这似乎有效:
interface extended extends base {
property3: [{
something1: string;
something2: string;
something3: number;
}];
property4: number;
}