2.0.0 • Published 5 years ago
@dev.mohe/conditional-type-checks v2.0.0
Conditional Type Checks
As TypeScript's type system becomes more complex it's useful to be able to write tests for what a type should be.
This library offers reusable conditional types to do these checks.
Type Checks
These will resolve to the type true when they match and false otherwise.
- IsNullable<T>- Checks if- Tis possibly- nullor- undefined.
- IsExact<T, U>- Checks if- Texactly matches- U.
- Has<T, U>- Checks if- Thas- U.
- NotHas<T, U>- Checks if- Tdoes not have- U.
- IsAny<T>- Checks if- Tis the- anytype.
- IsNever<T>- Checks if- Tis the- nevertype.
- IsUnknown<T>- Checks if- Tis the- unknowntype.
- More to come...
Ways to Test
Use what you prefer:
- The AssertTrue,AssertFalse, orAsserttypes.
- The assertfunction.
Use with AssertTrue, AssertFalse, and Assert
Doing a test:
import { AssertTrue, AssertFalse, Has, IsNever, IsNullable } from "conditional-type-checks";
const result = someFunction(someArg);
type doTest = AssertTrue<Has<typeof result, string> | IsNullable<typeof result>>
    | AssertFalse<IsNever<typeof result>>
    | Assert<Has<typeof result, number>, true>;Warning: Do not use an intersection type between checks (ex. Has<string | number, string> & IsNever<never>) because it will cause everything to pass if only one of the checks passes.
Use with assert
Doing a test:
import { assert, IsExact } from "conditional-type-checks";
const result = someFunction(someArg);
// compile error if the type of `result` is not exactly `string | number`
assert<IsExact<typeof result, string | number>>(true);Failure:
// causes a compile error that `true` is not assignable to `false`
assert<IsNullable<string>>(true); // string is not nullableInstall
npm install --save-dev conditional-type-checks2.0.0
5 years ago