import {Type} from "./Type"; /** * Type of an array of values. */ export class ArrayType extends Type { /** * Constructs a new array type of Sharkitek model property. * @param valueType - Type of the array values. */ constructor(protected valueType: Type) { super(); } serialize(value: SharkitekValueType[]): SerializedValueType[] { return value.map((value) => ( // Serializing each value of the array. this.valueType.serialize(value) )); } deserialize(value: SerializedValueType[]): SharkitekValueType[] { return value.map((serializedValue) => ( // Deserializing each value of the array. this.valueType.deserialize(serializedValue) )); } serializeDiff(value: SharkitekValueType[]): any { // Serializing diff of all elements. return value.map((value) => this.valueType.serializeDiff(value)); } resetDiff(value: SharkitekValueType[]): void { // Reset diff of all elements. value.forEach((value) => this.valueType.resetDiff(value)); } } /** * Type of an array of values. * @param valueType - Type of the array values. */ export function SArray(valueType: Type) { return new ArrayType(valueType); }