Skip to content

Iph3i0n/safe-type

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

53 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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.