@empathyco/x-types
v10.1.0-alpha.5
Published
Empathy search types
Downloads
2,692
Readme
x-types
TypeScript model types, guards, and jest schemas to use across the X project.
How to install
npm install @empathyco/x-types --save
How to use
The package export several model types that can be used to safely create objects that match the expectations of X packages.
import { RelatedTag } from '@empathyco/x-types';
const relatedTag: RelatedTag = {
query: 'lego',
tag: 'city',
selected: false,
previous: 'lego'
};
Additionally it also exposes some type guards to check between different types.
import { Filter, isHierarchicalFilter } from '@empathyco/x-types';
const filter: Filter = {
modelName: 'HierarchicalFilter',
id: 'color:red',
facetId: 'color',
label: 'red',
selected: false,
children: []
};
// You can't access filter.children before the `if` because you have a `Filter`, not a `HierarchicalFilter`.
if (isHierarchicalFilter(filter)) {
// But after using the `isHierarchicalFilter` guard, you can acces it.
console.log('Children:', filter.children);
}
Finally, there are some jest
schemas helpers that you could use to validate your objects.
import { HierarchicalFilterSchema } from '@empathyco/x-types/schemas';
import { Filter, isHierarchicalFilter } from '@empathyco/x-types';
it('is a hierarchical filter', () => {
const filter: Filter = {
modelName: 'HierarchicalFilter',
id: 'color:red',
facetId: 'color',
label: 'red',
selected: false,
children: []
};
expect(filter).toEqual(HierarchicalFilterSchema);
});
How to update the version
You can check if a new version has been published running npm outdated:
npm outdated @empathyco/x-types
And update it using npm update:
npm update --save @empathyco/x-types