جافاسكريبت - TS2511: لا يمكن إنشاء نسخة من الفئة المجردة 'Validator'
أنا جديد في TypeScript.
لماذا أحصل على رسالة الخطأ هذه؟
أنا لا أنوي تهيئة فئة مجردة. أنا أنوي تهيئة فئة ملموسة وهي IsEmptyValidator في قاموس validatorMap.
TS2511: لا يمكن إنشاء نسخة من الفئة المجردة 'Validator'
interface Dictionary<T> {
[key: string]: T;
}
abstract class Validator {
constructor() {
console.log("super");
}
}
class IsEmptyValidator extends Validator {
public validate() {}
constructor(){
super();
console.log("isEmpty");
}
}
class ValidatorFactory {
private validatorMap: Dictionary<Validator> = {
"isEmpty": IsEmptyValidator
};
constructor() { }
public create(validatorType: string) {
let validatorToCreate: Validator = new this.validatorMap[validatorType];
return validatorToCreate;
}
}
الإجابة رقم 1
قاموسك لا يحتوي على أمثلة Validator ولكن يحتوي على فئاته، لذلك يجب عليك أن تفعل هذا:
type ValidatorConstructor = {
new (): Validator;
}
class ValidatorFactory {
private validatorMap: Dictionary<ValidatorConstructor> = {
"isEmpty": IsEmptyValidator
};
constructor() {}
public create(validatorType: string) {
let validatorToCreate: Validator = new this.validatorMap[validatorType]();
return validatorToCreate;
}
}
