如何在TypeScript中的类的构造函数中指定泛型类
我想使用TypeScript将子类注入构造函数中的类中 下面是一些实际上不起作用的伪代码,我认为应该演示我正在尝试做的事情:如何在TypeScript中的类的构造函数中指定泛型类,typescript,Typescript,我想使用TypeScript将子类注入构造函数中的类中 下面是一些实际上不起作用的伪代码,我认为应该演示我正在尝试做的事情: type GenericConstructor<T> = { new (): T; } class MyClass { constructor( SubClass: GenericConstructor ) { this.subclass = new SubClass(); } } class MySubClass1 {}
type GenericConstructor<T> = { new (): T; }
class MyClass {
constructor(
SubClass: GenericConstructor
) {
this.subclass = new SubClass();
}
}
class MySubClass1 {}
class MySubClass2 {}
const withSubClass1 = new MyClass(MySubClass1);
const withSubClass2 = new MyClass(MySubClass2);
type GenericConstructor={new():T;}
类MyClass{
建造师(
子类:GenericConstructor
) {
this.subclass=新的subclass();
}
}
类MySubClass1{}
类MySubClass2{}
const with subclass1=新的MyClass(MySubClass1);
const with subclass2=新的MyClass(MySubClass2);
问题是TypeScript不允许我在构造函数上指定泛型参数(我怀疑我只是做错了什么)
我试图实现的是一个类(MyClass
),它可以接受一个通用的子类,该子类满足它自己的特定接口。我想知道这样做的正确方法是否是指定一个接口,但我不完全确定如何实现
谢谢你的帮助 因此,您不能将
构造函数
方法声明设置为泛型,因为它会使类本身可能是泛型的。我的意思是,如果你有这个:
class Foo<T> { constructor<U>() { } } // error, but imagine no error
当我们构造它的实例时,我们得到的是:
const withSubClass1 = new MyClass(MySubClass1);
// const withSubClass1: MyClass<MySubClass1>
const withSubClass2 = new MyClass(MySubClass2);
// const withSubClass2: MyClass<MySubClass2>
然后,MyClass
的实例将在其子类
属性中看到该结构:
withSubClass1.subclass.a.toUpperCase(); // okay
withSubClass2.subclass.b.toLowerCase(); // okay
好吧,希望这会有帮助;祝你好运
您应该将
MyClass
本身设置为泛型,例如。如果这符合你的需要,我会写一个答案;否则请编辑问题以澄清。祝你好运正在查看。。。谢谢!虽然我现在遇到了另一个问题,但这很有效;)。典型的!谢谢你的帮助。非常感谢,特别是关于在空课上增加私人道具的额外提示-我不知道!
class MySubClass1 { a = "" }
class MySubClass2 { b = "" }
withSubClass1.subclass.a.toUpperCase(); // okay
withSubClass2.subclass.b.toLowerCase(); // okay