Decorator for portation of haskell typeclass EQ
The Eq Interface defines equality and inequality in typescript. The decorator implements the EQ-Interface. On the other hand it is a library for funtions. Mainly Lists of this interface are used.
There is an es5-translation in the dist-directory. tsc was used for transpiling.
Installation
npm install decorator-eq --save
Usage
Decorator
const carConfig = ; @Eq implements IEq @Eq private interior:TInterior; @Eq private name:string; { thisinterior=interior; thisname=name; } //this is neccessary to ensure the interface boolean; boolean;
Notice the Configuration-Object. Objects of car can now be seen as equal, if the two properties interior and name are the same. Be aware that the properties can be any type that support "===" or has IEq implemented.
Using the EQ-Library
eq(cs:IEq[], ref:IEq, config:IEqConfig):IEq[]
:IEq :IEq // reveals all bmws
fuzzyEq(cs:IEq[], ref:IEq, config:IEqConfig):IEq[]
:IEq //reveals Audi and Cadillac
neq(cs:IEq[], ref:IEq, config:IEqConfig):IEq[]
:IEq //reveals all none leather cars
Using EqConfig
clone():IEqConfig
let copyOfConfig = config;
fields:Array
let newFields:Array<IField> = ; copyOfFieldsfields; copyOfFieldsfields = newFields;
Using EqOr
fuzzyEq(cs:IEq[], refs:IEq[], config:IEqConfig):IEq[]
//all listOfCars //reveals Audi and Cadillac or leather cars
eq(cs:IEq[], refs:IEq[], config:IEqConfig):IEq[]
//all leather cars //reveals leather cars //reveals leather cars or audis
Tests
npm test
Contributing
In lieu of a formal styleguide, take care to maintain the existing coding style. Add unit tests for any new or changed functionality. Lint and test your code.
Release History
- 0.1.0 Initial release
- 0.1.2 transpiling from typescript to es5
- 0.1.3 reorder code in multiple files
- 0.1.4 better transpiling
- 0.1.5 fuzzy field cloning
- 0.1.6 config-fields handling