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”)
这样的东西,那么您确实需要显式的。