typescript-test-utils
Helper types for testing your package exported types
Last updated 3 years ago by danielpanpm .
MIT · Repository · Bugs · Original npm · Tarball · package.json
$ cnpm install typescript-test-utils 
SYNC missed versions from official npm registry.

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<{ a: string, b: number }, "a" | "b"> // true
HasProperties<{ a: string, b: number }, "a" | "c"> // false

Extends<{ a: string, b: string }, { a: string }> // true
Extends<{ a: string, b: string }, { c: string }> // false

Equals<{ a: string }, { a: string }> // true
Equals<{ a: string, b: string }, { a: string }> // false

Not<true> // false
Not<false> // true

Not<Equals<{ a: string, b: string }, { 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

Current Tags

  • 1.2.1                                ...           latest (3 years ago)

4 Versions

  • 1.2.1                                ...           3 years ago
  • 1.2.0                                ...           3 years ago
  • 1.1.0                                ...           3 years ago
  • 1.0.0                                ...           3 years ago
Maintainers (1)
Downloads
Today 0
This Week 0
This Month 2
Last Day 0
Last Week 1
Last Month 4
Dependencies (0)
None
Dev Dependencies (7)
Dependents (0)
None

Copyright 2014 - 2021 © npmmirror.com |