我有两个非常相似的界面:
interface Foo {
value: boolean;
time: string;
}
interface ReactiveFoo {
value: BehaviorSubject<boolean>;
time: BehaviorSubject<string>;
}
我更愿意避免代码重复,并使ReactiveFoo
接口扩展Foo
。我知道有Partial
或Readonly
等实用程序类型
也许这是一种像这样做的方法(不工作):
type ReactiveFoo = Wrapped<Foo, BehaviourSubject>
注:另外,BehaviourSubject
是一个泛型类型,需要一个参数,不确定是否可以不带参数传递它
可以像这样硬编码BehaviorSubject
类型
type Wrap<Rec> = { [k in keyof Rec]: BehaviorSubject<Rec[k]> };
type Wrapped = Wrap<Foo>;
但是我没有找到一种方法来实际传递一个泛型类型(如BehaviorSubject
)作为参数给另一个泛型类型(在这个特定的例子中是Wrap
)