从抽象类获取属性的智能感知

时间:2020-07-04 05:16:13

标签: typescript visual-studio-code intellisense

我有一个返回抽象类的函数(此处未添加类型,并且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.thingFanalClass的属性。是否是因为thing当前的类型为any?可以对抽象类属性进行智能感知吗?

斯科特

1 个答案:

答案 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
  }
}

Playground Link