Custom jest matchers to test the state of your types.
You write Typescript and want assert various things about the state of your types?
This library provides a set of custom matchers that you can use to extend jest
and assert your test results against expected types.
This library is available as a package on NPM, install with your favorite package manager:
npm install --save-dev @lukemorales/jest-type-matchers
Import @lukemorales/jest-type-matchers
once in your tests setup
file:
// In your jest-setup.ts (or any other name)
import '@lukemorales/jest-type-matchers';
// In jest.config.js add (if you haven't already)
setupFilesAfterEnv: ['<rootDir>/jest-setup.ts']
These custom matchers allow you to just check your types. This means that they will never fail your test suite because type-checking happens at compile-time only.
expect(true).toHaveType<boolean>();
type Result = { ok: boolean } & { data: null };
expect<Result>({ ok: true, data: null }).toHaveType<{ ok: boolean; data: null }>();
This allows you to check that a variable has an expected type.
expect('hello world').toNotHaveType<number>();
This allows you to check that a variable does not have a specific type.
expect(true).toHaveStrictType<boolean>();
type Result = { ok: boolean } & { data: null };
expect<Result>({ ok: true, data: null }).toHaveStrictType<{ ok: boolean } & { data: null }>();
This allows you to check that a variable is strict equal to an expected type.
expect('hello world').toNotHaveStrictType<number>();
This allows you to check that a variable is not strict equal to a specific type.