typescript-test-utils

Helper types for testing your package exported types
- Only depends on typescript installed.
- Easily extendable
Note
I have notice some issues with typescript if your types are too complex, so I recommend using assertTrue and assertFalse instead of assert
Usage
You test them with the assert method ( wich is just a placeholder, it doesn't run anything ) and the type helpers
import {
assert,
assertTrue,
assertFalse,
HasProperties
} from "typescript-test-utils";
assertTrue<true>();
assertTrue<false>();
assertFalse<true>();
assertFalse<false>();
assert<true>(true);
assert<false>(true);
type MyType = { a: string };
assertTrue<HasProperties<MyType, "a">>();
assertFalse<HasProperties<MyType, "a">>();
assertTrue<HasProperties<MyType, "b">>();
assertFalse<HasProperties<MyType, "b">>();
And just run tsc on your test files to check for type errors
{
"scripts": {
"test": "tsc --noEmit src/*.test.ts"
}
}
Assertions
There are currently some implemented, if you have any idea for a new one send a PR or open an issue
import { assert, HasProperties, Extends, Equals, Not } from "typescript-test-utils";
HasProperties<{ a: string, b: number }, "a" | "b">
HasProperties<{ a: string, b: number }, "a" | "c">
Extends<{ a: string, b: string }, { a: string }>
Extends<{ a: string, b: string }, { c: string }>
Equals<{ a: string }, { a: string }>
Equals<{ a: string, b: string }, { a: string }>
Not<true>
Not<false>
Not<Equals<{ a: string, b: string }, { a: string }>>
Adding your own assertions
You only need to make a type that returns true or false, for example:
type Not<T extends boolean> = T extends true ? false : true;
or
type Extends<T, K> = T extends K ? true : false;
These are the definitions of the Not and Extends helpers