Typescript 如何将嵌套泛型参数传递给typscript类型声明?

Typescript 如何将嵌套泛型参数传递给typscript类型声明?,typescript,generics,typescript-generics,Typescript,Generics,Typescript Generics,我有一个类型声明 type IfExtendsThen<Tin, Tx, To1, To2> = Tin extends Tx ? To1 : To2; type AllPropertiesAsObservable<T> = { [key in keyof T]: IfExtendsThen<T[key], string | number | boolean, Observable<T[key]>, AllPropertiesAsObservabl

我有一个类型声明

type IfExtendsThen<Tin, Tx, To1, To2> = Tin extends Tx ? To1 : To2;

type AllPropertiesAsObservable<T> = {
  [key in keyof T]: IfExtendsThen<T[key], string | number | boolean, Observable<T[key]>, AllPropertiesAsObservable<T[key]>>;
} & Observable<T>;
allpropertiesabservable
声明中

注意:
Observable
这里来自
rxjs


有什么建议可以实现吗?

键入AllPropertiesAsObservable
?我已经尝试过了,但它不允许我使用
Tobservable
,因为TS不支持HKT,所以类型构造函数不能传递给其他类型构造函数。也许你需要一些类似黑客的东西
type AllPropertiesAsObservable<T, Tobservable extends Observable> = {
  [key in keyof T]: IfExtendsThen<T[key], string | number | boolean, Tobservable <T[key]>, AllPropertiesAsObservable<T[key], Tobservable >>;
} & Tobservable <T>;
let obj = AllPropertiesAsObservable<Xyz, BehaviorSubject>;
Generic type 'Observable<T>' requires 1 type argument(s).