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

问题描述 投票:1回答:1

我在基本抽象类中有一个方法,应该返回相同类型的构造函数参数。我不确定这是否可行,甚至是否有意义(也许我遗漏了一些明显的东西)。

这是我要做的事情的简化版:

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 

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

有可能吗?真的有道理吗?我应该选择一种完全不同的方法吗?

谢谢!

typescript abstract-class
1个回答
1
投票

您可以使用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));
© www.soinside.com 2019 - 2024. All rights reserved.