https://github.com/k8w/ts-interface-validator
TypeScript interface validator
https://github.com/k8w/ts-interface-validator
interface json json-schema schema typescript validator
Last synced: 20 days ago
JSON representation
TypeScript interface validator
- Host: GitHub
- URL: https://github.com/k8w/ts-interface-validator
- Owner: k8w
- License: apache-2.0
- Created: 2017-08-28T06:31:47.000Z (over 7 years ago)
- Default Branch: master
- Last Pushed: 2019-01-08T07:53:31.000Z (over 6 years ago)
- Last Synced: 2025-04-19T08:53:26.749Z (29 days ago)
- Topics: interface, json, json-schema, schema, typescript, validator
- Language: TypeScript
- Size: 54.7 KB
- Stars: 6
- Watchers: 2
- Forks: 2
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
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
```typescript
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`
1. Array type as `T[]` or `Array`
1. Type alias as `type Abc = string`
1. Nested referenced interface, as `type Bcd = Abc`
1. Logical expression, such as `string | number`
1. String literal,as `'Value1' | 'Value2'`
1. Relative import
1. Extend, as `interface Def extends Abc { ... }`
1. Index signature, as `{ [key: string]: number }`
1. Partial type, as `Partial`
1. Ignore comments automatically### Not Supported pattern
1. Mapped Types
1. Circular reference