类中扩展类的使用方法

时间:2019-05-11 13:24:20

标签: javascript typescript class

我正在尝试在扩展类中使用扩展类的方法(这可能不是很清楚,但是请看下面的示例,您将会理解)。

我的模块由打字稿制成:

export default class Test1 {
  private storedCond: string;

  public cond = (cond: string) => {
    this.storedCond = cond;
    return this.storedCond.length;
  };
  public getStoredCond = () => this.storedCond;
}

然后我要使用的是js文件中的一些方式:

import Test1 from './modules/Test1';

class Test2 extends Test1 {
  // this line is not working, how can i make it work ?
  this.cond('a futur dynamic string');

  final = () => `${this.getStoredCond()} is ${this.getStoredCond().length} length`;
}

const test = new Test2();

console.log(test.final());

我的Test1模块有点像商店,我可以在sotredCond = this.cond('a futur dynamic string');类中做类似的事情:Test2,但这不是我想要的。我想在cond类中提供一个字符串(Test2)并将其存储在Test1模块中。

2 个答案:

答案 0 :(得分:0)

您可以在课程Test2

中使用构造函数
import Test1 from './modules/Test1';

class Test2 extends Test1 {

  constructor(cond: string) {
    this.cond(cond);
  }

  public final = () => `${this.getStoredCond()} is ${this.getStoredCond().length} length`;
}

const test = new Test2('a futur dynamic string');

console.log(test.final());

每次调用new Test2(arg)时,构造函数都会被执行。

请参阅文档here

答案 1 :(得分:0)

@Nathan Bruet的答案有效,但这不是我真正想要的。

但是@Keith的评论是正确的。

我的Test2类的最终代码是:

class Test2 extends Test1 {
  constructor() {
    super();
    this.cond('a futur dynamic string');
  }

  final = () =>
    `${this.getStoredCond()} is ${this.getStoredCond().length} length`;
}