Skip to Content

Everything You Need for Type Testing.

TSTyche is a type testing tool for TypeScript. It ships with describe() and test() helpers, expect style assertions and a mighty test runner.

Quick StartReference

Helpers

If you are used to testing, a type test should look familiar:

import { , } from "tstyche"; function < extends { : number }>(: , : ) { return . === .; } ("isSameLength", () => { (([1, 2], [1, 2, 3]))..<boolean>(); (("one", "two"))..<boolean>(); ()...(1, 2); });

To group and organize tests, TSTyche has:

  • test(), it() and describe() helpers,
  • with .only, .skip and .todo run mode flags.

Assertions

The expect style assertions can check either the inferred type of an expression (as in the example above) or a type directly:

import { type , } from "tstyche"; type <> = { [ in keyof ]+?: [] | <[]>; }; type < extends object> = & { : boolean }; <<<{ : string }>>>()..<{ ?: string | <string>; : boolean; }>(); <<>>()...<[string]>();

Relation matchers:

  • .toBe() checks if a type is the same as the given type,
  • .toBeAssignableFrom() checks if a type is assignable from the given type,
  • .toBeAssignableTo() checks if a type is assignable to the given type.

Ability matchers:

  • .toAcceptProps() checks if a JSX component accepts the given props,
  • .toBeApplicable checks if a decorator is applicable to the given class or class member,
  • .toBeCallableWith() checks if a function is callable with the given arguments,
  • .toBeConstructableWith() checks if a class is constructable with the given arguments,
  • .toBeInstantiableWith() checks if a generic is instantiable with the given type arguments,
  • .toHaveProperty() checks if a type has the given property.

Runner

The tstyche command is the heart of TSTyche. It allows you to select test files by path, filter tests by name and run them against specific versions of TypeScript:

tstyche query-params --only multiple --target '>=5.6'

It is that simple! Actually, TSTyche does even more:

  • checks messages of errors suppressed by @ts-expect-error directives,
  • generates type tests from a data table,
  • runs tests in watch mode.

Try It Out

Try TSTyche online on StackBlitz:

Open in StackBlitz

Last updated on