带有泛型参数的TypeScript InstanceType

带有泛型参数的TypeScript InstanceType,typescript,generics,Typescript,Generics,我正在构建一个库,它允许使用者向它提供构造函数/类,该构造函数/类的实例将构成它的一个公共成员 对于一个简单的非泛型类,这很好,我们可以在库实例的公共接口上获得准确的推断intellisense和类型安全性: class MyLibrary any>{ public foo:InstanceType; 构造函数(ConsumerNewable:TNewable){ this.foo=new ConsumerNewable(); } } 类ConsumerProvidedClass{} const

我正在构建一个库,它允许使用者向它提供构造函数/类,该构造函数/类的实例将构成它的一个公共成员

对于一个简单的非泛型类,这很好,我们可以在库实例的公共接口上获得准确的推断intellisense和类型安全性:

class MyLibrary any>{
public foo:InstanceType;
构造函数(ConsumerNewable:TNewable){
this.foo=new ConsumerNewable();
}
}
类ConsumerProvidedClass{}
const library=新的MyLibrary(ConsumerProvidedClass);
library.foo//类型:ConsumerProvidedClass

现在考虑“代码> ConsumerProvidedClass < /代码>的场景本身有一个通用的参数,它定义了它的行为的某些方面。这对于这个问题并不重要,但实际用例是一个RxJS

主题
行为主题
,其中
TThroughput
是可观察对象的吞吐量类型。例如:

class ConsumerProvidedClass{…}
该库现已扩展,以允许使用者提供类型为
TModel
的“初始值”,该值将在实例化时传递给
ConsumerProvidedClass
,并成为其吞吐量类型:

class MyLibrary any,TModel>{
public foo:InstanceType;
构造函数(ConsumerNewable:TNewable,initialValue:TModel){
this.foo=新的ConsumerNewable(初始值);
}
}
类ConsumerProvidedClass{}
类ConsumerProvidedModel{}
const library=new MyLibrary(ConsumerProvidedClass,new ConsumerProvidedModel());
library.foo//类型:ConsumerProvidedClass
问题在于,属性
.foo
上的intellisense正确地推断出
ConsumerProvidedClass
,但不知道其通用吞吐量类型,并返回到

我想看到的是:

library.foo//type:ConsumerProvidedClass
但这将取决于能否将
TModel
提供给
InstanceType
作为通用参数。我还没有找到任何关于如何做到这一点的信息,或者如果确实有可能的话。理想情况下,我想这样做:

publicfoo:(InstanceType);
但不幸的是,这不是有效的TypeScript

当然,我可以让使用者在实例化库时显式地传递所有泛型类型,但我更希望在可能的情况下推断所有内容,以获得更好的开发人员体验


非常感谢您的任何见解。也许还有另一种方法我还没有找到。

我猜这是不可能的,因为你没有办法声明
t可交换的
是一种通用类型,采用
TModel
。TypeScript缺乏必要的表示你要找的内容的方法,不幸的是,好的,谢谢-我想我是在功能需求领域。