# typestack/class-validator

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/typestack-class-validator).**

11,796 stars · 845 forks · TypeScript · MIT

## Links

- GitHub: https://github.com/typestack/class-validator
- awesome-repositories: https://awesome-repositories.com/repository/typestack-class-validator.md

## Topics

`decorators` `typescript` `validation` `validator`

## Description

class-validator is a TypeScript class validation library that uses decorators to define constraints and rules for object properties. It functions as a decorator-based schema validator that ensures data integrity and structural correctness through a combination of synchronous checks and promise-based asynchronous rules.

The library provides a recursive validation system for checking complex data hierarchies, including nested classes and individual elements within collections. It includes an object property whitelist utility capable of stripping undocumented properties or blocking unknown fields from entering a validated class instance.

The framework covers a broad range of capabilities, including custom validation rule definition, conditional execution, and validation grouping for context-specific schemas. It also supports dynamic error message interpolation and the integration of external services via dependency injection for custom constraints.

## Tags

### Data & Databases

- [Data Validation](https://awesome-repositories.com/f/data-databases/data-validation.md) — Ensures TypeScript class properties meet specific criteria using decorators to maintain data integrity and type safety.
- [Property Whitelisting](https://awesome-repositories.com/f/data-databases/data-governance-modeling/data-modeling-schemas/schema-mapping/metadata-driven-schema-mappers/property-whitelisting.md) — Compares object keys against decorated class properties to strip or block non-whitelisted data.
- [Asynchronous Validators](https://awesome-repositories.com/f/data-databases/data-validation/asynchronous-validators.md) — Supports promise-based asynchronous rules for verifying data against external sources or databases.
- [Contextual Validation Groups](https://awesome-repositories.com/f/data-databases/json-schema-modeling/schema-validators/contextual-validation-groups.md) — Assigns decorators to specific groups to apply different validation schemas to the same object in different contexts. ([source](https://github.com/typestack/class-validator#readme))
- [Recursive Hierarchy Validation](https://awesome-repositories.com/f/data-databases/nested-data-persistence/nested-schema-mapping/partial-nested-validation/recursive-hierarchy-validation.md) — Provides a recursive validation system for checking complex data hierarchies and individual elements within collections.
- [Strict Schema Enforcers](https://awesome-repositories.com/f/data-databases/schema-enforcement-tools/strict-schema-enforcers.md) — Blocks objects containing properties not defined in the class to ensure strict adherence to the data schema. ([source](https://github.com/typestack/class-validator/blob/develop/CHANGELOG.md))
- [Conditional Validation Rules](https://awesome-repositories.com/f/data-databases/field-validation/conditional-validation-rules.md) — Allows skipping specific property checks based on boolean condition functions or property-level triggers. ([source](https://github.com/typestack/class-validator/blob/develop/README.md))
- [Conditional Enforcement](https://awesome-repositories.com/f/data-databases/schema-enforcement-tools/conditional-enforcement.md) — Supports applying specific sets of validation constraints based on active group tags for context-dependent schemas.
- [Dependency-Injected Constraints](https://awesome-repositories.com/f/data-databases/schema-enforcement-tools/validation-constraints/dependency-injected-constraints.md) — Enables providing external tools and data to custom validation constraint classes via a service container. ([source](https://github.com/typestack/class-validator#readme))

### Software Engineering & Architecture

- [Class Property Validation](https://awesome-repositories.com/f/software-engineering-architecture/class-property-validation.md) — Checks that class properties meet specific criteria using decorators to ensure data integrity before processing. ([source](https://github.com/typestack/class-validator#readme))
- [Custom Validation Rules](https://awesome-repositories.com/f/software-engineering-architecture/custom-validation-rules.md) — Allows defining reusable validation logic by implementing constraint interfaces and registering them globally. ([source](https://github.com/typestack/class-validator/blob/develop/CHANGELOG.md))
- [Nested Object Validation](https://awesome-repositories.com/f/software-engineering-architecture/data-schema-validation/data-type-validation/nested-object-validation.md) — Recursively checks properties that are instances of other decorated classes or multi-dimensional arrays. ([source](https://github.com/typestack/class-validator/blob/develop/CHANGELOG.md))
- [Recursive Object Validation](https://awesome-repositories.com/f/software-engineering-architecture/data-schema-validation/data-type-validation/object-shape-validation/recursive-object-validation.md) — Implements a recursive validation system for verifying complex data hierarchies, including nested classes and collections.
- [Decorator-Based Validation](https://awesome-repositories.com/f/software-engineering-architecture/decorator-based-validation.md) — Uses TypeScript decorators to define constraints and rules for object properties as metadata.
- [Validation Grouping](https://awesome-repositories.com/f/software-engineering-architecture/validation-grouping.md) — Filters which validation constraints to run by matching active group names against metadata tags.
- [Validation Libraries](https://awesome-repositories.com/f/software-engineering-architecture/validation-libraries.md) — Offers a comprehensive library of decorator-driven rules for verifying data integrity and structural correctness in TypeScript classes.
- [Array Schema Validation](https://awesome-repositories.com/f/software-engineering-architecture/array-schema-validation.md) — Applies validation rules to every individual element within arrays, sets, or maps. ([source](https://github.com/typestack/class-validator/blob/develop/README.md))
- [Dependency Injection Containers](https://awesome-repositories.com/f/software-engineering-architecture/dependency-injection-containers.md) — Integrates a service container to resolve custom validation logic and provide external dependencies to validators.
- [Request Validation](https://awesome-repositories.com/f/software-engineering-architecture/request-validation.md) — Provides utilities to validate incoming request data against class-based schemas to ensure security and correctness.
- [External Data Validation](https://awesome-repositories.com/f/software-engineering-architecture/workflow-automation-patterns/determinism-validators/configuration-validators/external-api-validators/external-data-validation.md) — Processes properties that return promises to allow for validation requiring external data or API calls. ([source](https://github.com/typestack/class-validator#readme))

### Programming Languages & Runtimes

- [Asynchronous Validation](https://awesome-repositories.com/f/programming-languages-runtimes/asynchronous-promise-interfaces/asynchronous-validation.md) — Wraps validation checks in promises to allow for network requests or database lookups before returning results.

### Scientific & Mathematical Computing

- [Schema Tree Traversers](https://awesome-repositories.com/f/scientific-mathematical-computing/recursive-tree-traversal-algorithms/schema-tree-traversers.md) — Recursively walks through nested objects and collections to apply validation rules across deep data hierarchies.

### User Interface & Experience

- [Additional Property Filtering](https://awesome-repositories.com/f/user-interface-experience/component-property-systems/property-validation/additional-property-filtering.md) — Removes properties without decorators from an object or triggers errors when non-whitelisted properties are found. ([source](https://github.com/typestack/class-validator/blob/develop/README.md))
- [Metadata Collection](https://awesome-repositories.com/f/user-interface-experience/component-utilities/ui-frameworks/rendering-models/composition-rendering-patterns/component-patterns/class-components/class-decorators/metadata-collection.md) — Uses TypeScript decorators to store validation constraints as metadata for runtime retrieval.

### Security & Cryptography

- [Input Sanitization](https://awesome-repositories.com/f/security-cryptography/application-and-system-security/web-security/input-sanitization.md) — Includes an object property whitelist utility to strip undocumented properties and prevent unknown fields from entering the system.
- [Property Strictness](https://awesome-repositories.com/f/security-cryptography/object-property-prohibitions/property-strictness.md) — Provides a whitelist utility that ensures objects contain only specified keys by stripping or prohibiting extra properties.

### Part of an Awesome List

- [Data Validation](https://awesome-repositories.com/f/awesome-lists/devtools/data-validation.md) — Decorator-based class property validation.
