ts-interface-validator

TypeScript interface validator

Usage no npm install needed!

<script type="module">
  import tsInterfaceValidator from 'https://cdn.skypack.dev/ts-interface-validator';
</script>

README

TypeScript Interface Validator

Intro

A library to validate whether a value is matched a typescript interface definition.

This is a lightweight and individual implementaion. So only support limited forms of definition.

For more detail you can see Supported and Not Supported below.

If you should have any question, please feel free to let me know.

Usage

import ValidatorManager from 'ts-interface-validator';

//Validate from type definition
let validator = ValidatorManager.instance.getValidator('{ a: string; b: number[]; c?: \'C1\' | \'C2\'}');
//Validate from definition in file
let validator2 = ValidatorManager.instance.getValidator('TypeName', 'xxx.ts');

//Validate
let result = validator.validate({ a: 'a', b: [2, 'b'] });
if (result.isSuccess) {
    //succ
}
else {
    console.log(result.message, result.originalError.message)
}

Supported pattern

  1. Basic type as string, number, boolean, Object, any
  2. Array type as T[] or Array<T>
  3. Type alias as type Abc = string
  4. Nested referenced interface, as type Bcd = Abc
  5. Logical expression, such as string | number
  6. String literal,as 'Value1' | 'Value2'
  7. Relative import
  8. Extend, as interface Def extends Abc { ... }
  9. Index signature, as { [key: string]: number }
  10. Partial type, as Partial<T>
  11. Ignore comments automatically

Not Supported pattern

  1. Mapped Types
  2. Circular reference