Runtime library to validate data against TypeScript interfaces
—
Create checker instances from type suites generated by ts-interface-builder, enabling runtime validation of TypeScript interfaces.
Creates checker instances from one or more type suites. Combines multiple type suites to resolve cross-references between types.
/**
* Takes one or more type suites and combines them into a suite of interface checkers.
* @param typeSuite - One or more type suites (generated by ts-interface-builder)
* @returns Object mapping type names to Checker objects
*/
function createCheckers(...typeSuite: ITypeSuite[]): ICheckerSuite;Usage Examples:
import { createCheckers } from "ts-interface-checker";
import userTypes from "./user-ti";
import addressTypes from "./address-ti";
// Single type suite
const { User } = createCheckers(userTypes);
// Multiple type suites for cross-references
const { User, Address } = createCheckers(userTypes, addressTypes);
// Access checkers by name
User.check({ name: "Alice", age: 30 });
Address.check({ street: "123 Main St", city: "Anytown" });Maps type names to their corresponding Checker instances.
/**
* Suite of checker instances mapped by type name
*/
interface ICheckerSuite {
[name: string]: Checker;
}Maps type names to their TType definitions. Used as input to createCheckers.
/**
* Suite of type definitions mapped by type name
*/
interface ITypeSuite {
[name: string]: TType;
}When multiple type suites are provided, they are combined to resolve type references across modules.
Usage Examples:
// shapes-ti.ts (generated)
export const Rectangle = t.iface([], {
width: "number",
height: "number",
color: "Color" // References Color from color-ti
});
// color-ti.ts (generated)
export const Color = t.union("string", "RGB");
export const RGB = t.tuple("number", "number", "number");
// Usage
import shapeTypes from "./shapes-ti";
import colorTypes from "./color-ti";
const { Rectangle } = createCheckers(shapeTypes, colorTypes);
Rectangle.check({
width: 100,
height: 50,
color: [255, 0, 0] // RGB tuple
});Each Checker instance contains validation methods and utility functions for the specific type.
/**
* Main validation class for checking data against types
*/
class Checker {
constructor(private suite: ITypeSuite, private ttype: TType, private _path: string = 'value');
}Install with Tessl CLI
npx tessl i tessl/npm-ts-interface-checker