具有不同名称但继承同一类的多个类



我有这样一个类:

abstract class MyClass {
abstract myProp: number;
constructor() {
// Some code
}
}

我想创建多个类来扩展这个类。但是我不想重复很多次,因为我有很多课。因此,目的是每个类都有一个不同的名称和myProp。

例如:

class FirstClass extends MyClass {
myProp = 1;
constructor() {
super();
// Some code
}
}
class SecondClass extends MyClass {
myProp = 2;
constructor() {
super();
// Some code
}
}
所以我想生成这些类(例如一个函数),但问题是,我将不得不使用新的关键字。所以这些类的用法应该是这样的:
const myConst = new FirstClass();
const myConst2 = new SecondClass();

我希望这是有意义的。我只是不想重复每个类,因为它有不同的名称和myProp。

可以通过返回匿名类的函数创建类。

const createClass = ( prop: number ) => {
return class extends MyClass {
myProp: number;
constructor () {
super();
this.myProp = prop;
}
}
}
const FirstClass = createClass(1);
const x = new FirstClass();
console.log(x.myProp);

或者看看这些问题的答案:

  • ES6动态类名
  • 在javascript中从类名创建对象ECMAScript 6

如果我正确理解了你的问题,你可以把不同的变量作为构造函数的参数传递。

class MyClass {
myProp: number;
constructor(myProp: number) {
this.myProp = myProp
// Some code
}
}

然后创建你想要的类实例。

const myConst = new MyClass(1);
const myConst2 = new MyClass(2);

就我个人而言,我只会在想要添加一些不共享的方法或属性时扩展一个类。由于myProp存在于两个类中,因此最好将其值传递给构造函数。

最新更新