Like Hamcrest,
mismatched takes a compositional approach. It makes the most of partial types to automatically build matchers for arbitrary JS values. And it allows builders to create both domain values and matchers.
This was developed when I needed a decent matcher for thespian, a mocking package. I built this as I was dissatisfied with what was available in TS, due to poor matching of mock arguments and/or poor error messages (especially when dealing with complex, deeply-nested objects).
Cheers, Rick