如何定义一个可重用的树状类型来定义我独特的属性结构,但是允许为每个叶子参数化包装类型?
我有以下代码,代表我的应用程序在3个不同级别的状态:
export interface LogicTree {
series: Logic<Series>,
base: {
ageGroup: Logic<AgeGroup>,
woodSpecies: Logic<WoodSpecies>,
length: Logic<Length>,
profile: Logic<Profile>,
}
}
export interface StorageTree {
series: Storage<Series>,
base: {
ageGroup: Storage<AgeGroup>,
woodSpecies: Storage<WoodSpecies>,
length: Storage<Length>,
profile: Storage<Profile>,
}
}
export interface ResultTree {
series: Series,
base: {
ageGroup: AgeGroup,
woodSpecies: WoodSpecies,
length: Length,
profile: Profile,
}
}
请注意,我在3种类型中都有相同的结构和类型变量用法。
为了简化更改和探索树之间的转换,我想只定义一次树结构,并为每个树应用不同的包装类型。但我没有这样做。
以下是我的尝试和我得到的错误:
1)
export interface AbstractTree<Wrapper> {
series: Wrapper<Series>>,
...
}
Type&#39; Wrapper&#39;不是通用的。
2)
export interface AbstractTree<Wrapper<T>> {
series: Wrapper<Series>>,
...
}
&#39;包装&#39;宣布但从未使用过。
&#39;,&#39;预期
找不到姓名&#39; T&#39;。
第3)
export interface AbstractTree<T, Wrapper<T extends BaseValue>> {
series: Wrapper<Series>>,
...
}
&#39; T&#39;宣布但从未使用过。
找不到姓名&#39; T&#39;。
&#39; BaseValue&#39;仅指类型,但在此处用作值。