【问题标题】:what is the best way to pass values to an abstract class?将值传递给抽象类的最佳方法是什么?
【发布时间】:2021-08-31 18:09:34
【问题描述】:

我使用以下方法,它有效,但我想知道是否有更好的方法。

export abstract class BaseStoreService {

  display() {
    console.log(this.getTypeName());        //     toto
  }

  getTypeName(): any {}
}
export class StoreTodoService extends BaseStoreService {
  getTypeName(): string {
    return 'toto';
  }

所以,它有效!请问有更好的方法吗?

【问题讨论】:

  • 您的答案将取决于是否需要动态计算该值(在这种情况下您的技术可能是最好的),或者该值是否有效地恒定(这样子类可以传递恒定值进入super() 构造函数)。
  • 这种方式有什么问题?你关心的问题是什么?这种方法不能让你做你想做的事情?
  • 这样是对的,但是你必须在抽象类中声明抽象函数:stackoverflow.com/questions/13333489/…

标签: typescript


【解决方案1】:

这是您使用method override 的好方法。您也可以在构造函数中使用变量和发送参数。

abstract class BaseStoreService {
    DisplayName:string;
    constructor(displayName: string){
        this.DisplayName = displayName;
    }
  display() {
    console.log(this.DisplayName);        //     toto
  }
}
class StoreTodoService extends BaseStoreService {
   constructor(){
       super("toto");
       this.display();
   }
}

见playground

另见this。它对 Typescript 中的 abstract class 非常有用。

【讨论】:

  • 好的,好建议,我会学习的。谢谢
【解决方案2】:

感谢您的回答,这是最终版本:

export abstract class BaseStoreService {

  display() {
    console.log(this.getTypeName());        //     toto
  }

  abstract getTypeName(): any;
}
export class StoreTodoService extends BaseStoreService {
  getTypeName(): string {
    return 'toto';
  }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-04
    • 1970-01-01
    • 2011-01-06
    • 2013-12-29
    相关资源
    最近更新 更多