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

    Install

    npm i typescript-test-utils

    DownloadsWeekly Downloads

    1

    Version

    1.2.1

    License

    MIT

    Unpacked Size

    5.78 kB

    Total Files

    5

    Last publish

    Collaborators

    • danielpanpm