例如我有这个类:
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
}
}
所以我想生成这些类(例如一个函数),但问题是我必须使用 new 关键字。 所以每个类的用法应该是这样的:
const myConst = new FirstClass();
const myConst2 = new SecondClass();
我希望这有点道理。我只是不想重复每个类,因为它有不同的名称和 myProp。
答案 0 :(得分:2)
您可以通过返回匿名类的函数创建类。
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);
或者查看这些问题的答案以获得想法:
答案 1 :(得分:0)
如果我正确理解您的问题,您可以在构造函数中传递不同的变量作为参数。
class MyClass {
myProp: number;
constructor(myProp: number) {
this.myProp = myProp
// Some code
}
}
然后创建你想要的类实例。
const myConst = new MyClass(1);
const myConst2 = new MyClass(2);
就我个人而言,如果我想添加一些不共享的方法或属性,我只会扩展一个类。由于 myProp
存在于两个类中,因此最好将值传递给构造函数。