我在基本抽象类中有一个方法,应该返回相同类型的构造函数参数。我不确定这是否可行,甚至是否有意义(也许我遗漏了一些明显的东西)。
这是我要做的事情的简化版:
abstract class ValueObject {
private value: any;
constructor(value: any) {
this.value = value;
}
getValue() {
return this.value;
}
}
class UserName extends ValueObject {
constructor(name: string) {
super(name);
}
}
new UserName('some name').getValue(); // This has a type 'any', I want it to be the same type as I called super() with, in this case 'string', but could be any other type for different subclasses
对我来说,这很有意义,因为我无法真正实例化抽象类,所以我需要一种方法来传递方法将返回的类型。
有可能吗?真的有道理吗?我应该选择一种完全不同的方法吗?
谢谢!
您可以使用generics在抽象类中指定类型,即
abstract class ValueObject<T> {
private value: T;
constructor(value: T) {
this.value = value;
}
getValue() : T {
return this.value;
}
}
class UserName extends ValueObject<string> {
constructor(name: string) {
super(name);
}
}
const result = new UserName('some name').getValue();
console.log(result);
console.log(typeof(result));