Errors
01
Missing samples in iterable. In order to let JTC know which values are valid for the iterables, you should push at least one sample to each iterable.
Wrong
new ArrayMeta([] as any);
new MapMeta([] as any);
Right
new ArrayMeta([new NumberField()]);
new MapMeta([new NumberField()]);
02
builder
must create custom classes, not JS native
Wrong
new ObjectMeta({ builder: Number, fields: {} });
Right
class User {
public id: string;
}
const USER_META = new ObjectMeta({
builder: User,
fields: {
id: new StringField()
}
});
03
Second attempt to define meta (new ObjectMeta) with already used builder
Wrong
class User {
public id: string;
}
const USER_META = new ObjectMeta({
builder: User,
fields: {
id: new StringField()
}
});
const USER_META_1 = new ObjectMeta({
builder: User,
fields: {
id: new StringField()
}
});
Right
class User {
public id: string;
}
const USER_META = new ObjectMeta({
builder: User,
fields: {
id: new StringField()
}
});
04
Iterable can have only one inner iterable entry
Wrong
new ArrayMeta([
new NumberArrayField(),
new NumberArrayField(),
]);
new MapMeta([
new NumberArrayField(),
new NumberArrayField(),
]);
Right
new ArrayMeta([
new NumberArrayField(),
]);
new MapMeta([
new NumberArrayField(),
]);
05
Meta for the parrent class should be created before creating meta for the child class
Wrong
class Id {
public id: string;
}
class User extends Id {
public name: string;
}
new ObjectMeta({
builder: User,
fields: {
id: new StringField(),
name: new StringField(),
}
});
Right
class Id {
public id: string;
}
const ID_META = new ObjectMeta({
builder: Id,
getId: ({ id }) => id,
fields: {
id: new StringField(),
}
});
class User extends Id {
public name: string;
}
new ObjectMeta({
builder: User,
fields: {
id: new StringField(),
name: new StringField(),
}
});
06
Can't get meta from such value
JTC.getMeta
will work only with instances which constructor was used during new ObjectMeta
call. In all other cases error will be thrown.
Wrong
class User {
public id = ``;
public isAdmin = false;
}
JTC.getMeta({});
JTC.getMeta(1);
JTC.getMeta(``);
JTC.getMeta(null);
JTC.getMeta(undefined);
JTC.getMeta(false);
JTC.getMeta(new User());
Right
class User {
public id: string;
}
const USER_META = new ObjectMeta({
builder: User,
fields: {
id: new StringField()
}
});
const meta = JTC.getMeta(new User());
console.log(meta === USER_META); // true
Last updated
Was this helpful?