首页 > 解决方案 > 从抽象类中获取属性的智能感知

问题描述

我有一个返回抽象类的函数(不在这里添加类型,并且当前具有“任何”thing属性)。

基类.ts

export function BaseClass(cls) {

  const thing = someFunction(cls)
    
  abstract class BaseThingClass{
    public model
    constructor() {
      this.thing = thing
    }
    // ....other code
  } 
  return BaseThingClass
}

我扩展了抽象类:

最终类.ts

export class FinalClass extends BaseClass(SomeClass){

  async someFunction() {
    const stuff = await this.thing.someFunction()
    return stuff
  }
}

这段代码总体上可以工作,但在 VSCode 中,我希望通过智能感知来查看this.thingin的属性FanalClass。是因为thing是当前的类型any吗?是否可以对抽象类属性进行智能感知?

斯科特

标签: typescriptvisual-studio-codeintellisense

解决方案


您需要在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
  }
}

游乐场链接


推荐阅读