Typescript 如何从构造函数继承类变量类型?

Typescript 如何从构造函数继承类变量类型?,typescript,Typescript,我正在编写一个验证器类,类似 class Validator { private path: string; private data: unknown; constructor(path: string, data: string) { this.data = data; this.path = path; } public isString() { /* ... */ } } function<T>(path: string, data

我正在编写一个验证器类,类似

class Validator {
  private path: string;
  private data: unknown;

  constructor(path: string, data: string) {
    this.data = data;
    this.path = path;

  }

  public isString() { /* ... */ }
}
function<T>(path: string, data: T) {  }
现在我的数据类型是未知的,但我希望类型是从构造函数继承的

const validator = new Validator("HomePage", 123); // data in class should be inherited as number
对于函数,我通常做一些类似的事情

class Validator {
  private path: string;
  private data: unknown;

  constructor(path: string, data: string) {
    this.data = data;
    this.path = path;

  }

  public isString() { /* ... */ }
}
function<T>(path: string, data: T) {  }
函数(路径:字符串,数据:T){

但我不知道如何在课堂上做到这一点。特别是从构造函数继承,它与函数非常相似:

class Validator<T> {
  constructor(private path: string, private data: T) {

  }
}

const validator = new Validator<string>('', '');

类验证程序{
构造函数(私有路径:字符串,私有数据:T){
}
}
常量验证器=新验证器(“”,”);
这也不是继承,它只是一个泛型参数


您也不应该有
私有路径字符串,构造函数参数已经为您做了这些。

它与函数非常相似:

class Validator<T> {
  constructor(private path: string, private data: T) {

  }
}

const validator = new Validator<string>('', '');

类验证程序{
构造函数(私有路径:字符串,私有数据:T){
}
}
常量验证器=新验证器(“”,”);
这也不是继承,它只是一个泛型参数


您也不应该有
私有路径字符串
,构造函数参数已经为您做了这件事。

只需添加一点-可以忽略通用值
,TS仍将尝试猜测它。例如,
newvalidator(“,“hello”)
将自动推断
T
string
。传递一个显式的泛型参数仍然可以,但在某些情况下可能不需要,如果您想要像
newvalidator(“,“hello”)
这样的东西,那么您确实需要显式的。但是,只需添加一点,泛型值
可以省略,TS仍然会尝试猜测它。例如,
newvalidator(“,“hello”)
将自动推断
T
string
。传递一个显式的泛型参数仍然可以,但在某些情况下可能不需要,但是,如果您想要像
newvalidator(“,“hello”)
这样的东西,那么您确实需要显式的。