QuickModelEl Kit Completo de Modelado TypeScript
30+ transformadores de tipos, validación en dos capas, mocks, 7 formatos de schema y servidor MCP para IA — desde un único decorador `@Quick`.
30+ transformadores de tipos, validación en dos capas, mocks, 7 formatos de schema y servidor MCP para IA — desde un único decorador `@Quick`.
Works with the tools you already use
QuickModel es más que una librería de serialización — es una plataforma de desarrollo completa para aplicaciones TypeScript intensivas en datos.
Date, BigInt, Set, Map, RegExp, Symbol, Error, WeakMap, WeakSet, ArrayBuffer, TypedArray, URL… Cada tipo tiene su propio transformer especializado.[Date], [[Post]], [[[Map]]] para 1D, 2D o 3D.@Quick: decorador de clase que configura todos los transformadores de golpe.@QType: decorador de propiedad para casos concretos o contextos distintos.@QAlias: renombra campos entre el JSON de entrada y la instancia. Perfecto para snake_case ↔ camelCase.@QComputed: define getters que aparecen en serialize() sin existir en el JSON original.excludeFields: excluye campos permanentemente de toda serialización (password, _checksum, etc.).checkIntegrity() verifica que cada valor coincide con su transformer (fechas inválidas, BigInt fuera de rango, RegExp peligroso).@QRule aplica predicados declarativos por campo. checkRules() devuelve errores con campo y mensaje.isValid() ejecuta ambas capas en una sola llamada. validationReport() separa los errores por origen.@QField, @QRule y @QGroup no requieren extender QModel. Sirve para DTOs, formularios Angular/Vue/React…qCheckRulesByGroup() valida solo el grupo activo, perfecto para formularios multi-paso.qCheckRulesAsync() soporta predicados que retornan Promise<boolean> con timeoutMs y modo serial/parallel.Un solo método getSchema(format) exporta tu modelo como:
json · zod · openapi · mongo · typescript · graphql · ajv
Documentación, validación y contratos de API siempre sincronizados con tu código.
QuickModel incluye 20 herramientas y 20 prompts guiados: create_model, interface_to_model, get_model_schema, generate_mock, simulate_validation, diff_models, roundtrip…
User.mock().random() → objeto válido y tipado con datos realistas.User.mock().array(5) → array de 5 instancias.User.mock().random({ name: 'Alice' }) → objeto con campos sobreescritos.@faker-js/faker. Perfecto para desarrollar UI antes de que la API exista.Las APIs devuelven objetos variados en la misma lista (Payment → Card o PayPal). QuickModel instancia la subclase correcta automáticamente según la forma del dato. Sin switch, sin factories.
{ __circular: true } en la salida.javascript:) y limita longitud de RegExp.__proto__ excluidas automáticamente.unknownPropertyPolicy: 'error' lanza error ante propiedades inesperadas en APIs públicas.QModel.extends(BaseClass): añade superpoderes a entidades TypeORM, DTOs de NestJS o cualquier clase sin tocar la jerarquía.experimentalDecorators (TS 3.4+) y el estándar TC39 (TS 5+).declare, ! y ? funcionan igual.QuickModel vs otras librerías con características similares
⚠️ = disponible con código manual adicional
| Característica | QuickModel | arktype | class-transformer | class-validator | faker (manual) | Immer | joi | superjson | TypeBox | valibot | vest | yup | Zod | Plain JS |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Campos computados (@QComputed) | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
| Coerción automática | ✅ | ❌ | ⚠️ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ⚠️ | ❌ | ❌ | ⚠️ | ❌ |
| copy() / isDirty() | ✅ | ❌ | ❌ | ❌ | ❌ | ⚠️ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
| Exportar schema (JSON/Zod/OpenAPI) | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ |
| Form schemas (@QField) | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ⚠️ | ❌ | ❌ | ❌ |
| Generación de mocks tipados | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
| Grupos de validación | ✅ | ❌ | ❌ | ⚠️ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ |
| Herencia multinivel con inferencia | ✅ | ❌ | ⚠️ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
| IA / Servidor MCP integrado | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
| Inferencia TS compile-time | ✅ | ✅ | ❌ | ❌ | ❌ | ⚠️ | ❌ | ❌ | ✅ | ✅ | ❌ | ❌ | ✅ | ❌ |
| Integridad en runtime | ✅ | ✅ | ❌ | ⚠️ | ❌ | ❌ | ⚠️ | ❌ | ✅ | ⚠️ | ⚠️ | ⚠️ | ✅ | ❌ |
| JSON polimórfico | ✅ | ❌ | ⚠️ | ❌ | ❌ | ❌ | ❌ | ⚠️ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
| Preserva RegExp/undefined/NaN | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
| Reglas de negocio async (@QRule) | ✅ | ❌ | ❌ | ⚠️ | ❌ | ❌ | ⚠️ | ❌ | ❌ | ❌ | ⚠️ | ⚠️ | ⚠️ | ❌ |
| Restricciones (@IsEmail…) | ✅ | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
| Serialización nativa (toJSON) | ✅ | ❌ | ⚠️ | ❌ | ❌ | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
| Tree-shakeable | ✅ | ✅ | ❌ | ❌ | ✅ | ✅ | ❌ | ❌ | ⚠️ | ✅ | ❌ | ❌ | ❌ | ❌ |
Un solo decorador transforma strings JSON en BigInt, Date, Map y más
import { QModel, Quick } from 'quickmodel';
interface IUser {
name: string;
balance: bigint;
lastLogin: Date;
roles: Set;
}
@Quick({
balance: 'bigint', // primitive alias
lastLogin: Date, // native constructor
roles: Set, // complex collection
})
class User extends QModel {
declare name: string;
declare balance: bigint;
declare lastLogin: Date;
declare roles: Set;
}
const user = new User({
name: 'Alice',
balance: '500000000000000000', // string → BigInt auto-coerced
lastLogin: '2024-03-15T10:00:00Z', // string → Date auto-coerced
roles: ['admin', 'editor'], // array → Set auto-coerced
});
console.log(user.balance + 1n); // 500000000000000001n
console.log(user.lastLogin.getFullYear()); // 2024
console.log(user.roles.has('admin')); // true