如何在抽象类内部推断构造函数参数类型



我在一个抽象基类中有一个方法,它应该返回相同类型的构造函数参数。我不确定这是否可能,或者是否有意义(也许我错过了一些显而易见的东西(。

以下是我尝试做的事情的简化版本:

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 

这对我来说很有意义,因为我不能真正实例化抽象类,所以我需要有一种方法来传递方法将返回的类型。

有可能吗?这有道理吗?我应该采取完全不同的方法吗?

谢谢!

您可以使用泛型来指定抽象类中的类型,即

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));

最新更新