import { registerDecorator, ValidationArguments, ValidationOptions, ValidatorConstraint, ValidatorConstraintInterface } from 'class-validator'; export function IsNumbericArray(validationOptions?: ValidationOptions) { return (object: any, propertyName: string) => { registerDecorator({ target: object.constructor, propertyName, options: validationOptions, validator: IsArrayOfNumberConstraint, }); }; } @ValidatorConstraint({ name: 'IsNumbericArray' }) export class IsArrayOfNumberConstraint implements ValidatorConstraintInterface { validate(value: any, validationArguments?: ValidationArguments) { let ret = true if (Array.isArray(value) === false) { return false } else { value.forEach(element => { if (typeof element !== "number"){ ret = false } }); } return ret } defaultMessage(validationArguments?: ValidationArguments): string { return "validation.IS_NUMBERIC_ARRAY" // return "{"+validationArguments.property + "} " + "response.message.stringValidationFailed } }