@paulthomastaylor/safe-type
TypeScript icon, indicating that this package has built-in type declarations

2.2.1 • Public • Published

Safe Type

Usage

import { Assert, IsObject, IsString, IsType, Checker } from "@paulpopat/safe-type";

function Thing(argument: unknown) {
  Assert(argument, IsString);
  // We now know this is a string and inference will tell us as much
}

function ThingWithoutException(argument: unknown) {
  if (!IsString(argument)) {
    console.log("The argument is not a string");
    return;
  }

  // Do something cool
}

// If we want a usable type from a runtime checker then we use IsType
type String = IsType<typeof IsString>;

// If we want to accept a runtime checker as an argument then we have this
function DoSomething<T>(argument: unknown, checker: Checker<T>) {
  Assert(argument, checker);
}

DoSomething({ test: "value" }, IsObject({ test: IsString }))

It is as simple as that!

Inference is fully operational, no casting will be required.

Checkers

Find below a list of all available checkers:

  • IsString
  • IsNumber
  • IsBigInt
  • IsSymbol
  • IsBoolean
  • IsFunction
  • IsDate
  • IsLiteral
    • A function that takes a value and will return a checker for that value as a type.
  • IsArray
    • A function that takes a checker and returns an checker for an array of the type of the provided checker.
  • IsTuple
    • A function that takes any number of arguments that are checkers and returns a checker for a tuple of provided checkers.
  • IsUnion
    • A function that takes any number of arguments that are checkers and returns a checker for any one of the provided checkers.
  • IsIntersection
    • A function that takes any number of arguments that are checkers and returns a checker for all of the provided checkers.
  • IsObject
    • A function that takes an object where each key is a checker and returns a checker for an object of the type provided.
  • IsDictionary
    • A function that takes a checker and returns a checker for a dictionary with a key of string and value of the checker.
  • Optional
    • A function that takes a checker and returns a checker for that type and null or undefined.
  • DoNotCare
    • Always returns true and infers unknown. Useful in the IsObject checker.

Utilities

Tools to work with the checkers to allow for type based controls.

  • Assert
    • Takes a checker and a value and throws if the checker is not the value. Supports inference.
  • PatternMatch
    • Performs an action for each possible type provided.

Package Sidebar

Install

npm i @paulthomastaylor/safe-type

Weekly Downloads

1

Version

2.2.1

License

ISC

Unpacked Size

28.2 kB

Total Files

9

Last publish

Collaborators

  • paulthomastaylor