Typescript Массив типизированных классов - PullRequest
0 голосов
/ 14 апреля 2020

Я новичок в разработке в целом, поэтому прошу прощения за мое невежество. Я пытаюсь понять, как использовать классы Typescript для объединения двух массивов данного класса

Используя следующий пример, класс ValidationError состоит из свойство и сообщение об ошибке. Класс MyErrors является массивом класса ValidationError. У меня есть различные модули, которые возвращают MyErrors и хотят затем объединить их в один массив ValidationErrors

В конечном итоге я бы хотел, чтобы это выглядело примерно так:

let allErrors = new MyErrors

allErrors.add("property_a","there was an error with property a") // add an error in the main module

let module_a = returns a MyErrors array
let module_b = returns a MyErrors array

allErrors.addAll(module_a) // Add all errors returned from module_a to allErrors 
allErrors.addAll(module_b) // Add all errors returned from module_b to allErrors 
//allErrors should now be an array of ValidationError items the include the items from the main module, module_a and module_b

Ниже приведено мое стартовое место:

export class ValidationError  {
    public property: string
    public error: string
    constructor(property: string, error: string){
        this.property = property;
        this.error = error;
    };  
}

export class MyErrors extends Array<ValidationError>{
    add(property: string,error: string) {
        let newError = new ValidationError(property,error);
        return this.push(newError);
    }
    addAll(errors: MyErrors) {
        return this.concat(errors); //MyErrors instance that concatenates to the declared instance
    }
}

Спасибо за вашу помощь!

1 Ответ

1 голос
/ 14 апреля 2020

Вы можете достичь того, что хотите, вообще не расширяя Array.
Синтаксис позволяет вам вызывать Array.push() с элементами из другого массива.

const allErrors: ValidationError[] = [];

allErrors.push(new ValidationError("property", "error"));

const moduleA: ValidationError[] = [ /* ... */ ];
const moduleB: ValidationError[] = [ /* ... */ ];

// Here's the nice bit using the spread syntax
allErrors.push(...moduleA, ...moduleB);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...