【问题标题】:Getting intellisense for properties from an abstract class从抽象类中获取属性的智能感知
【发布时间】:2020-10-24 18:42:58
【问题描述】:

我有一个返回抽象类的函数(这里没有添加类型,目前thing 属性有“任何”)。

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 中,我希望通过智能感知来查看 FanalClass 中的 this.thing 的属性。是因为thing 目前是any 类型吗?是否可以对抽象类属性进行智能感知?

斯科特

【问题讨论】:

    标签: typescript visual-studio-code intellisense


    【解决方案1】:

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

    【讨论】:

    • 感谢您的回复。唯一的“东西”是,我有一个改变它的功能。请看我的例子。假设我知道“事物”的类型应该是什么。我可以设置 BaseThingClass 的事物属性的类型吗?我试过了,但这似乎也不起作用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-02-05
    • 2010-11-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-26
    • 2012-01-10
    相关资源
    最近更新 更多