你好,我再次讲述我的TS冒险和头痛:)
我正在开发一个框架,其中一些类型是未知的,因为用户可以从抽象方法返回任何内容.
在这种情况下,我想推断用户从initialize
方法返回的内容,并在同一类的属性中使用该类型.此initialize
方法必须返回从Base
扩展的类.
代码如下:
class Base {
method_1() {}
}
class Child extends Base {
method_2() {}
}
abstract class AbstractClass {
prop: C
abstract initialize(): C extends Base
}
class UserClass1 extends AbstractClass {
initialize() {
return new Base()
}
someMethod() {
this.prop.method_1() // Valid, no TS error
this.prop.method_2() // Error, it doesn't exist in Base
}
}
class UserClass2 extends AbstractClass {
initialize() {
return new Child()
}
someMethod() {
this.prop.method_1() // Valid, no TS error
this.prop.method_2() // Valid, no TS error
}
}
在简历中,我必须从initialize
方法(从Base
扩展)中推断C
类型,并将该类型应用于prop
.
知道这是否可以做到吗?
先谢谢你.