Skip to main content

Computed Properties

Entity classes are just normal classes, so any common derived data can just be added as getters to the class itself.

import { Entity } from '@rest-hooks/rest';

class User extends Entity {
id = '';
firstName = '';
lastName = '';
username = '';
email = '';

pk() {
return this.id;
}

get fullName() {
return `${this.firstName} ${this.lastName}`;
}
}

If the computations are expensive feel free to add some memoization.

import { Entity } from '@rest-hooks/rest';
import { memoize } from 'lodash';

class User extends Entity {
truelyExpensiveValue = memoize(() => {
// compute that expensive thing!
});
}
tip

If you simply want to deserialize a field to a more useful form like Date or BigNumber, you can use the declarative static schema.

import { Entity } from '@rest-hooks/rest';

class User extends Entity {
id = '';
firstName = '';
lastName = '';
createdAt = new Date(0);

pk() {
return this.id;
}

static schema = {
createdAt: Date,
};
}