我正在尝试在扩展类中使用扩展类的方法(这可能不是很清楚,但是请看下面的示例,您将会理解)。
我的模块由打字稿制成:
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
模块中。
答案 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`;
}