1. ts-interface-builder
Compile TypeScript interfaces into a description that allows runtime validation
ts-interface-builder
Package: ts-interface-builder
Created by: gristlabs
Last modified: Sat, 22 Jul 2023 22:39:54 GMT
Version: 0.3.3
License: Apache-2.0
Downloads: 60,935
Repository: https://github.com/gristlabs/ts-interface-builder

Install

npm install ts-interface-builder
yarn add ts-interface-builder

ts-interface-builder

Build Status
npm version

Compile TypeScript interfaces into a description that allows runtime validation.

This tool runs at build time to create runtime validators from TypeScript
interfaces. It allows validating data, such as parsed JSON objects received
over the network, or parsed JSON or YAML files, to check if they satisfy a
TypeScript interface, and to produce informative error messages if they do not.

Installation

npm install --save-dev ts-interface-builder
npm install --save ts-interface-checker

Usage

This module works together with ts-interface-checker module. You use
ts-interface-builder in a build step that converts some TypeScript interfaces
to a new TypeScript or JavaScript file (with -ti.ts or -ti.js extension) that provides a runtime
description of the interface. You then use ts-interface-checker in your
program to create validator functions from this runtime description.

`npm bin`/ts-interface-builder [options] <typescript-files...>

By default, produces <ts-file>-ti.ts file for each input file, which has
runtime definitions for all types in the input file. For example, if you have a
TypeScript file that defines some types:

 // foo.ts
interface Square {
  size: number;
  color?: string;
}

Then you can generate code for runtime checks with:

 `npm bin`/ts-interface-builder foo.ts

It produces a file like this:

 // foo-ti.ts
import * as t from "ts-interface-checker";

export const Square = t.iface([], {
  "size": "number",
  "color": t.opt("string"),
});

const exportedTypeSuite: t.ITypeSuite = {
  Square,
};
export default exportedTypeSuite;

See ts-interface-checker module for how to use this file in your program.

Limitations

This module currently does not support generics, except Promises. Promises are supported by unwrapping Promise<T> to simply T.

RELATED POST

Enhancing Vue.js Development: Harnessing the Potential of Vue-Loader

Enhancing Vue.js Development: Harnessing the Potential of Vue-Loader

Simplify Data Validation in Vue.js: A Step-by-Step Guide to Using Regex

Simplify Data Validation in Vue.js: A Step-by-Step Guide to Using Regex

Troubleshooting Made Easy: Common Issues and Solutions with vue-loader Without vue-cli

Troubleshooting Made Easy: Common Issues and Solutions with vue-loader Without vue-cli

Optimizing Webpack 4 with Vue CLI 3: Disabling the Cache-Loader

Optimizing Webpack 4 with Vue CLI 3: Disabling the Cache-Loader

Step-by-Step Guide: How to Add a Function to Your Vuex Plugin

Step-by-Step Guide: How to Add a Function to Your Vuex Plugin