Array

Creation

class User {
   public numbers: number[];
}

const numbersField = new NumberArrayField();
const USER_META = new ObjectMeta({
   builder: User,
   fields: {
      numbers: numbersField
   }
});

const values = [
   {
      numbers: [1, 2, 3, 4, 5]
   },
   {
      numbers: {}
   }
];

const result = JTC.convert({
   id: `Array`,
   meta: new ObjectArrayMeta({ meta: USER_META }),
   values,
});
const log = JTC.log.asString(result.tree);

/* 1 (EXCLUDED) -> {...} | Validation failed for all fields
   1 (EXCLUDED) -> numbers -> {...} | Expected array, but got object
*/
console.log(log);

Validation

class User {
   public numbers: number[];
}

const numbersField = new NumberArrayField({
   /* Minimal array size */
   minSize: 2,
   /* Maximum array size */
   maxSize: 5,
   /* Entry validation config */
   entry: {
      isNullable: true,
      min: 2,
      max: 3,
   }
});

const USER_META = new ObjectMeta({
   builder: User,
   fields: {
      numbers: numbersField
   }
});

const values = [
   {
      numbers: [1, 2, 3, null, 4, 5]
   }
];

const result = JTC.convert({
   id: `Number Array`,
   meta: new ObjectArrayMeta({ meta: USER_META }),
   values,
});

const log = JTC.log.asString(result.tree);

/* 0 -> numbers -> 0 -> 1 | Smaller than expected(2)
   0 -> numbers -> 4 -> 4 | Bigger than expected(3)
   0 -> numbers -> 5 -> 5 | Bigger than expected(3)
   0 -> numbers -> INSTANCE -> [...] | Size(6) is more than expected(5)
*/
console.log(log);

Types

Each data type have specific class which describes array of such data.

Last updated

Was this helpful?