typescript-test-utils
TypeScript icon, indicating that this package has built-in type declarations

1.2.1 • Public • Published

typescript-test-utils

npm version Conventional Commits code style: prettier

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>(); // ok
assertTrue<false>(); // nop
assertFalse<true>(); // nop
assertFalse<false>(); // ok
 
assert<true>(true); // ok
assert<false>(true); // nop
 
type MyType = { a: string };
assertTrue<HasProperties<MyType, "a">>(); // ok
assertFalse<HasProperties<MyType, "a">>(); // nop
assertTrue<HasProperties<MyType, "b">>(); // nop
assertFalse<HasProperties<MyType, "b">>(); // ok

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<{ astring, bnumber }, "a" | "b"> // true
HasProperties<{ astring, bnumber }, "a" | "c"> // false
 
Extends<{ astring, bstring }, { a: string }> // true
Extends<{ astring, bstring }, { c: string }> // false
 
Equals<{ astring }, { a: string }> // true
Equals<{ astring, bstring }, { a: string }> // false
 
Not<true> // false
Not<false> // true
 
Not<Equals<{ astring, bstring }, { a: string }>> // true

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

Dependencies (0)

    Dev Dependencies (7)

    Package Sidebar

    Install

    npm i typescript-test-utils

    Weekly Downloads

    2

    Version

    1.2.1

    License

    MIT

    Unpacked Size

    5.78 kB

    Total Files

    5

    Last publish

    Collaborators

    • danielpanpm