我正在做一个Node JS打字项目.我将首先向您介绍代码,因为这对我来说更容易解释.
我上的课如下所示
export abstract class RequestValidator {
abstract getSchema(req: Request, res?: Response): joi.ObjectSchema;
}
然后我有一个具体的类,它扩展了上面的抽象类.
class LoginFormValidator extends RequestValidator {
getSchema(req: Request, res?: Response): joi.ObjectSchema {
return {
email: joi.string().required(),
password: joi.string().required()
} as joi.ObjectSchema; // this is just dummy code
}
}
我想要做的是,我希望将扩展为RequestValidator
的类的类型传递给一个函数,并创建它的一个实例.
就像这样.
// this is purely a dummy code
const validateRequest = (validatorClass: typeof RequestValidator) => {
// here I want to create an instance like this `new validatorClass`
}
正如您在上面的虚拟代码中所看到的,该注释暗示了我想要实现的目标.我会将LoginFormValidator
传递给这样的函数.
validateRequest(LoginFormValidator);
我怎么能做到这一点?或者,除了我正在努力实现的目标之外,还有其他 Select 吗?基本上,我不希望客户端创建类的实例.我更愿意在validateRequest
函数中创建实例.客户仍然应该知道RequestValidator
的合同.