我有一个返回抽象类的函数(此处未添加类型,并且thing
属性当前为“ any”)。
BaseClass.ts
export function BaseClass(cls) {
const thing = someFunction(cls)
abstract class BaseThingClass{
public model
constructor() {
this.thing = thing
}
// ....other code
}
return BaseThingClass
}
我扩展了抽象类:
FinalClass.ts
export class FinalClass extends BaseClass(SomeClass){
async someFunction() {
const stuff = await this.thing.someFunction()
return stuff
}
}
此代码总体上可以运行,但是在VSCode中,我期望能够智能地了解this.thing
中FanalClass
的属性。是否是因为thing
当前的类型为any
?可以对抽象类属性进行智能感知吗?
斯科特
答案 0 :(得分:0)
您需要在BaseClass
函数中添加通用类型参数,以捕获在extends
中使用该函数时传递给该函数的实际类型:
export function BaseClass<T>(cls: new ()=> T) {
const thing = new cls()
return class BaseThingClass{
public thing:T
constructor() {
this.thing = thing
}
}
}
export class FinalClass extends BaseClass(SomeClass){
async someFunction() {
const stuff = await this.thing.someFunction()
return stuff
}
}