Я пытаюсь разработать алгоритм проверки для сложной модели данных в Typescript. В упрощенной форме я придумал такую модель класса:
export abstract class Validatable {
protected errors: string[];
isValid(): boolean {
let result = true;
for each property (which may or may not be an array) in this instance which extends Validatable {
if (Array(property)) {
if (!property.every(item=>item.isValid()) {
return false;
}
} else {
if (!property.isValid()) {
return false;
}
}
}
return this.errors.length === 0;
}
}
export class B extends Validatable{
name: string;
}
export class A extends Validatable{
name: string;
Bs: B[];
}
Мне сложно понять, как настроить цикл по свойствам (строка 'для каждого свойства). Или, если это вообще возможно.
Идея состоит в том, чтобы вызвать isValid для экземпляра класса A, который, в свою очередь, вызовет isValid для всех составляющих свойств вместо повторения практически одного и того же кода в каждом классе.