JSPM

@shadow578/type-guardian

1.1.0
  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 3
  • Score
    100M100P100Q26485F
  • License Apache-2.0

Quickly write Type-Guard functions for checking objects

Package Exports

  • @shadow578/type-guardian
  • @shadow578/type-guardian/lib/index.js

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (@shadow578/type-guardian) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

type-guardian

functional, composable type guards.

Installation

Install type-guardian using

npm install type-guardian

Usage

Function match

import { match } from 'type-guardian'

The match function creates a simple type guard. The function takes either a TypeName or another TypeGuard and returns a new guard for that type:

const isString = match<string>('string');

isString(''); // returns true
isString('i am a string'); // returns true
isString(0); // returns false
isString(null); // returns false
isString(undefined); // returns false

Function matchNullable

import { matchNullable } from 'type-guardian'

The matchNullable function creates a type guard for a nullable type. A nullable type accepts every value of the target type, null and undefined. The function takes either a TypeName or another TypeGuard and returns a new guard for that type:

const isNullableString = matchNullable<string>('string');

isNullableString(''); // returns true
isNullableString('i am a string'); // returns true
isNullableString(null); // returns true
isNullableString(undefined); // returns true
isNullableString(0); // returns false

Function matchArray

import { matchArray } from 'type-guardian'

The matchArray function creates a type guard for a array of a given type. matchArray can be configured to either accept or reject empty arrays using the emptyBehaviour parameter. Default behaviour is to accept empty arrays (accept-empty). The function takes either a TypeName or another TypeGuard and returns a new guard for that type:

const isStringArray = matchArray<string>('string'); // equivalent to matchArray('string', 'accept-empty')

isStringArray(['a string']); // returns true
isStringArray(['a string', 0]); // returns false
isStringArray([]); // returns true
isStringArray(null); // returns false

Or, with emptyBehaviour set to reject-empty:

const isStringArray = matchArray<string>('string', 'reject-empty');

isStringArray(['a string']); // returns true
isStringArray(['a string', 0]); // returns false
isStringArray([]); // returns false
isStringArray(null); // returns false

Function matchUnion

import { matchUnion } from 'type-guardian'

The matchUnion function creates a type guard for a union type. The function takes a list of either a TypeName or another TypeGuard and returns a new guard for the corrosponding union type:

const isStringOrBoolean = matchUnion<string|boolean>('string', 'boolean');

isStringOrBoolean('i am a string'); // returns true
isStringOrBoolean(true); // returns true
isStringOrBoolean(null); // returns false
isStringOrBoolean(undefined); // returns false
isStringOrBoolean(0); // returns false

Function matchEnumeration

import { matchEnumeration } from 'type-guardian'

The matchEnumeration function creates a type guard for a enumeration. The function takes a list of either a TypeName or another TypeGuard and returns a new guard for the corrosponding union type:

const isMyEnum = matchEnumeration<'yes'|'no'|'maybe'>('yes', 'no', 'maybe');

isMyEnum('yes'); // returns true
isMyEnum('no'); // returns true
isMyEnum('maybe'); // returns true
isMyEnum('something else'); // returns false
isMyEnum(''); // returns false

Function matchObject

import { matchObject } from 'type-guardian'

The matchObject function creates a type guard for a enumeration. The function takes a list of either a TypeName or another TypeGuard and returns a new guard for the corrosponding union type:

const isMyObject = matchObject<MyObject>({
    'name': 'string',
    'age': 'number'
});

isMyObject({
    name: 'Peter',
    age: 23
}); // returns true
isMyObject({
    name: 'Peter'
}); // returns false
isMyObject({}); // returns false
isMyObject(null); // returns false

For a more complex example, see ComplexObject.test.ts.

TypeName

The TypeName type is a enumeration of all basic types available in JavaScript (the same as you can get from typeof). Additionally, it contains a special value 'any' which matches anything.

TypeGuard

A TypeGuard is a function that checks if a input matches a pre-defined type. Type guards can be nested to define more complex types or even objects.

Builtin Type Guards

type-guardian comes with type guards for commonly used types.

import { isString } from "type-guardian/TypeGuards"

License

Copyright 2023 shadow578

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, > software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or > implied. See the License for the specific language governing permissions > and limitations under the License.