Package Exports
- typia
- typia/lib/IRandomGenerator
- typia/lib/IRandomGenerator.js
- typia/lib/IValidation
- typia/lib/IValidation.js
- typia/lib/Primitive
- typia/lib/Primitive.js
- typia/lib/TypeGuardError
- typia/lib/TypeGuardError.js
- typia/lib/factories/CommentFactory
- typia/lib/factories/CommentFactory.js
- typia/lib/factories/ExpressionFactory
- typia/lib/factories/ExpressionFactory.js
- typia/lib/factories/IdentifierFactory
- typia/lib/factories/IdentifierFactory.js
- typia/lib/factories/LiteralFactory
- typia/lib/factories/LiteralFactory.js
- typia/lib/factories/MetadataCollection
- typia/lib/factories/MetadataCollection.js
- typia/lib/factories/MetadataFactory
- typia/lib/factories/MetadataFactory.js
- typia/lib/factories/MetadataTagFactory
- typia/lib/factories/MetadataTagFactory.js
- typia/lib/factories/StatementFactory
- typia/lib/factories/StatementFactory.js
- typia/lib/factories/TemplateFactory
- typia/lib/factories/TemplateFactory.js
- typia/lib/factories/TypeFactory
- typia/lib/factories/TypeFactory.js
- typia/lib/factories/ValueFactory
- typia/lib/factories/ValueFactory.js
- typia/lib/factories/internal/metadata/MetadataHelper
- typia/lib/factories/internal/metadata/MetadataHelper.js
- typia/lib/factories/internal/metadata/emplace_metadata_object
- typia/lib/factories/internal/metadata/emplace_metadata_object.js
- typia/lib/factories/internal/metadata/explore_metadata
- typia/lib/factories/internal/metadata/explore_metadata.js
- typia/lib/factories/internal/metadata/iterate_metadata
- typia/lib/factories/internal/metadata/iterate_metadata.js
- typia/lib/factories/internal/metadata/iterate_metadata_array
- typia/lib/factories/internal/metadata/iterate_metadata_array.js
- typia/lib/factories/internal/metadata/iterate_metadata_atomic
- typia/lib/factories/internal/metadata/iterate_metadata_atomic.js
- typia/lib/factories/internal/metadata/iterate_metadata_coalesce
- typia/lib/factories/internal/metadata/iterate_metadata_coalesce.js
- typia/lib/factories/internal/metadata/iterate_metadata_constant
- typia/lib/factories/internal/metadata/iterate_metadata_constant.js
- typia/lib/factories/internal/metadata/iterate_metadata_map
- typia/lib/factories/internal/metadata/iterate_metadata_map.js
- typia/lib/factories/internal/metadata/iterate_metadata_native
- typia/lib/factories/internal/metadata/iterate_metadata_native.js
- typia/lib/factories/internal/metadata/iterate_metadata_object
- typia/lib/factories/internal/metadata/iterate_metadata_object.js
- typia/lib/factories/internal/metadata/iterate_metadata_resolve
- typia/lib/factories/internal/metadata/iterate_metadata_resolve.js
- typia/lib/factories/internal/metadata/iterate_metadata_set
- typia/lib/factories/internal/metadata/iterate_metadata_set.js
- typia/lib/factories/internal/metadata/iterate_metadata_template
- typia/lib/factories/internal/metadata/iterate_metadata_template.js
- typia/lib/factories/internal/metadata/iterate_metadata_tuple
- typia/lib/factories/internal/metadata/iterate_metadata_tuple.js
- typia/lib/factories/internal/metadata/iterate_metadata_union
- typia/lib/factories/internal/metadata/iterate_metadata_union.js
- typia/lib/functional/$any
- typia/lib/functional/$any.js
- typia/lib/functional/$every
- typia/lib/functional/$every.js
- typia/lib/functional/$guard
- typia/lib/functional/$guard.js
- typia/lib/functional/$is_between
- typia/lib/functional/$is_between.js
- typia/lib/functional/$is_email
- typia/lib/functional/$is_email.js
- typia/lib/functional/$is_ipv4
- typia/lib/functional/$is_ipv4.js
- typia/lib/functional/$is_ipv6
- typia/lib/functional/$is_ipv6.js
- typia/lib/functional/$is_url
- typia/lib/functional/$is_url.js
- typia/lib/functional/$is_uuid
- typia/lib/functional/$is_uuid.js
- typia/lib/functional/$join
- typia/lib/functional/$join.js
- typia/lib/functional/$number
- typia/lib/functional/$number.js
- typia/lib/functional/$report
- typia/lib/functional/$report.js
- typia/lib/functional/$rest
- typia/lib/functional/$rest.js
- typia/lib/functional/$string
- typia/lib/functional/$string.js
- typia/lib/functional/$tail
- typia/lib/functional/$tail.js
- typia/lib/functional/Namespace
- typia/lib/functional/Namespace.js
- typia/lib/index
- typia/lib/index.js
- typia/lib/metadata/IJsDocTagInfo
- typia/lib/metadata/IJsDocTagInfo.js
- typia/lib/metadata/IMetadata
- typia/lib/metadata/IMetadata.js
- typia/lib/metadata/IMetadataApplication
- typia/lib/metadata/IMetadataApplication.js
- typia/lib/metadata/IMetadataConstant
- typia/lib/metadata/IMetadataConstant.js
- typia/lib/metadata/IMetadataEntry
- typia/lib/metadata/IMetadataEntry.js
- typia/lib/metadata/IMetadataObject
- typia/lib/metadata/IMetadataObject.js
- typia/lib/metadata/IMetadataProperty
- typia/lib/metadata/IMetadataProperty.js
- typia/lib/metadata/IMetadataTag
- typia/lib/metadata/IMetadataTag.js
- typia/lib/metadata/Metadata
- typia/lib/metadata/Metadata.js
- typia/lib/metadata/MetadataConstant
- typia/lib/metadata/MetadataConstant.js
- typia/lib/metadata/MetadataObject
- typia/lib/metadata/MetadataObject.js
- typia/lib/metadata/MetadataProperty
- typia/lib/metadata/MetadataProperty.js
- typia/lib/module
- typia/lib/module.js
- typia/lib/programmers/ApplicationProgrammer
- typia/lib/programmers/ApplicationProgrammer.js
- typia/lib/programmers/AssertCloneProgrammer
- typia/lib/programmers/AssertCloneProgrammer.js
- typia/lib/programmers/AssertParseProgrammer
- typia/lib/programmers/AssertParseProgrammer.js
- typia/lib/programmers/AssertProgrammer
- typia/lib/programmers/AssertProgrammer.js
- typia/lib/programmers/AssertPruneProgrammer
- typia/lib/programmers/AssertPruneProgrammer.js
- typia/lib/programmers/AssertStringifyProgrammer
- typia/lib/programmers/AssertStringifyProgrammer.js
- typia/lib/programmers/CheckerProgrammer
- typia/lib/programmers/CheckerProgrammer.js
- typia/lib/programmers/CloneProgrammer
- typia/lib/programmers/CloneProgrammer.js
- typia/lib/programmers/FeatureProgrammer
- typia/lib/programmers/FeatureProgrammer.js
- typia/lib/programmers/IsCloneProgrammer
- typia/lib/programmers/IsCloneProgrammer.js
- typia/lib/programmers/IsParseProgrammer
- typia/lib/programmers/IsParseProgrammer.js
- typia/lib/programmers/IsProgrammer
- typia/lib/programmers/IsProgrammer.js
- typia/lib/programmers/IsPruneProgrammer
- typia/lib/programmers/IsPruneProgrammer.js
- typia/lib/programmers/IsStringifyProgrammer
- typia/lib/programmers/IsStringifyProgrammer.js
- typia/lib/programmers/PruneProgrammer
- typia/lib/programmers/PruneProgrammer.js
- typia/lib/programmers/RandomProgrammer
- typia/lib/programmers/RandomProgrammer.js
- typia/lib/programmers/StringifyProgrammer
- typia/lib/programmers/StringifyProgrammer.js
- typia/lib/programmers/ValidateCloneProgrammer
- typia/lib/programmers/ValidateCloneProgrammer.js
- typia/lib/programmers/ValidateParseProgrammer
- typia/lib/programmers/ValidateParseProgrammer.js
- typia/lib/programmers/ValidateProgrammer
- typia/lib/programmers/ValidateProgrammer.js
- typia/lib/programmers/ValidatePruneProgrammer
- typia/lib/programmers/ValidatePruneProgrammer.js
- typia/lib/programmers/ValidateStringifyProgrammer
- typia/lib/programmers/ValidateStringifyProgrammer.js
- typia/lib/programmers/helpers/AtomicPredicator
- typia/lib/programmers/helpers/AtomicPredicator.js
- typia/lib/programmers/helpers/CloneJoiner
- typia/lib/programmers/helpers/CloneJoiner.js
- typia/lib/programmers/helpers/FunctionImporeter
- typia/lib/programmers/helpers/FunctionImporeter.js
- typia/lib/programmers/helpers/IExpressionEntry
- typia/lib/programmers/helpers/IExpressionEntry.js
- typia/lib/programmers/helpers/OptionPredicator
- typia/lib/programmers/helpers/OptionPredicator.js
- typia/lib/programmers/helpers/PruneJoiner
- typia/lib/programmers/helpers/PruneJoiner.js
- typia/lib/programmers/helpers/RandomJoiner
- typia/lib/programmers/helpers/RandomJoiner.js
- typia/lib/programmers/helpers/RandomRanger
- typia/lib/programmers/helpers/RandomRanger.js
- typia/lib/programmers/helpers/StringifyJoinder
- typia/lib/programmers/helpers/StringifyJoinder.js
- typia/lib/programmers/helpers/StringifyPredicator
- typia/lib/programmers/helpers/StringifyPredicator.js
- typia/lib/programmers/helpers/UnionExplorer
- typia/lib/programmers/helpers/UnionExplorer.js
- typia/lib/programmers/helpers/UnionPredicator
- typia/lib/programmers/helpers/UnionPredicator.js
- typia/lib/programmers/internal/application_array
- typia/lib/programmers/internal/application_array.js
- typia/lib/programmers/internal/application_boolean
- typia/lib/programmers/internal/application_boolean.js
- typia/lib/programmers/internal/application_constant
- typia/lib/programmers/internal/application_constant.js
- typia/lib/programmers/internal/application_default
- typia/lib/programmers/internal/application_default.js
- typia/lib/programmers/internal/application_default_string
- typia/lib/programmers/internal/application_default_string.js
- typia/lib/programmers/internal/application_native
- typia/lib/programmers/internal/application_native.js
- typia/lib/programmers/internal/application_number
- typia/lib/programmers/internal/application_number.js
- typia/lib/programmers/internal/application_object
- typia/lib/programmers/internal/application_object.js
- typia/lib/programmers/internal/application_schema
- typia/lib/programmers/internal/application_schema.js
- typia/lib/programmers/internal/application_string
- typia/lib/programmers/internal/application_string.js
- typia/lib/programmers/internal/application_templates
- typia/lib/programmers/internal/application_templates.js
- typia/lib/programmers/internal/application_tuple
- typia/lib/programmers/internal/application_tuple.js
- typia/lib/programmers/internal/check_array
- typia/lib/programmers/internal/check_array.js
- typia/lib/programmers/internal/check_array_length
- typia/lib/programmers/internal/check_array_length.js
- typia/lib/programmers/internal/check_bigint
- typia/lib/programmers/internal/check_bigint.js
- typia/lib/programmers/internal/check_dynamic_properties
- typia/lib/programmers/internal/check_dynamic_properties.js
- typia/lib/programmers/internal/check_everything
- typia/lib/programmers/internal/check_everything.js
- typia/lib/programmers/internal/check_native
- typia/lib/programmers/internal/check_native.js
- typia/lib/programmers/internal/check_number
- typia/lib/programmers/internal/check_number.js
- typia/lib/programmers/internal/check_object
- typia/lib/programmers/internal/check_object.js
- typia/lib/programmers/internal/check_string
- typia/lib/programmers/internal/check_string.js
- typia/lib/programmers/internal/check_string_tags
- typia/lib/programmers/internal/check_string_tags.js
- typia/lib/programmers/internal/check_template
- typia/lib/programmers/internal/check_template.js
- typia/lib/programmers/internal/check_union_array_like
- typia/lib/programmers/internal/check_union_array_like.js
- typia/lib/programmers/internal/check_union_tuple
- typia/lib/programmers/internal/check_union_tuple.js
- typia/lib/programmers/internal/decode_union_object
- typia/lib/programmers/internal/decode_union_object.js
- typia/lib/programmers/internal/feature_object_entries
- typia/lib/programmers/internal/feature_object_entries.js
- typia/lib/programmers/internal/metadata_to_pattern
- typia/lib/programmers/internal/metadata_to_pattern.js
- typia/lib/programmers/internal/prune_object_properties
- typia/lib/programmers/internal/prune_object_properties.js
- typia/lib/programmers/internal/stringify_dynamic_properties
- typia/lib/programmers/internal/stringify_dynamic_properties.js
- typia/lib/programmers/internal/stringify_native
- typia/lib/programmers/internal/stringify_native.js
- typia/lib/programmers/internal/stringify_regular_properties
- typia/lib/programmers/internal/stringify_regular_properties.js
- typia/lib/programmers/internal/template_to_pattern
- typia/lib/programmers/internal/template_to_pattern.js
- typia/lib/schemas/IJsonApplication
- typia/lib/schemas/IJsonApplication.js
- typia/lib/schemas/IJsonComponents
- typia/lib/schemas/IJsonComponents.js
- typia/lib/schemas/IJsonSchema
- typia/lib/schemas/IJsonSchema.js
- typia/lib/transform
- typia/lib/transform.js
- typia/lib/transformers/CallExpressionTransformer
- typia/lib/transformers/CallExpressionTransformer.js
- typia/lib/transformers/ExpressionWithArgumentTransformer
- typia/lib/transformers/ExpressionWithArgumentTransformer.js
- typia/lib/transformers/FileTransformer
- typia/lib/transformers/FileTransformer.js
- typia/lib/transformers/IProject
- typia/lib/transformers/IProject.js
- typia/lib/transformers/ITransformOptions
- typia/lib/transformers/ITransformOptions.js
- typia/lib/transformers/NodeTransformer
- typia/lib/transformers/NodeTransformer.js
- typia/lib/transformers/features/miscellaneous/ApplicationTransformer
- typia/lib/transformers/features/miscellaneous/ApplicationTransformer.js
- typia/lib/transformers/features/miscellaneous/AssertCloneTransformer
- typia/lib/transformers/features/miscellaneous/AssertCloneTransformer.js
- typia/lib/transformers/features/miscellaneous/AssertPruneTransformer
- typia/lib/transformers/features/miscellaneous/AssertPruneTransformer.js
- typia/lib/transformers/features/miscellaneous/CloneTransformer
- typia/lib/transformers/features/miscellaneous/CloneTransformer.js
- typia/lib/transformers/features/miscellaneous/CreateAssertCloneTransformer
- typia/lib/transformers/features/miscellaneous/CreateAssertCloneTransformer.js
- typia/lib/transformers/features/miscellaneous/CreateAssertPruneTransformer
- typia/lib/transformers/features/miscellaneous/CreateAssertPruneTransformer.js
- typia/lib/transformers/features/miscellaneous/CreateCloneTransformer
- typia/lib/transformers/features/miscellaneous/CreateCloneTransformer.js
- typia/lib/transformers/features/miscellaneous/CreateIsCloneTransformer
- typia/lib/transformers/features/miscellaneous/CreateIsCloneTransformer.js
- typia/lib/transformers/features/miscellaneous/CreateIsPruneTransformer
- typia/lib/transformers/features/miscellaneous/CreateIsPruneTransformer.js
- typia/lib/transformers/features/miscellaneous/CreatePruneTransformer
- typia/lib/transformers/features/miscellaneous/CreatePruneTransformer.js
- typia/lib/transformers/features/miscellaneous/CreateRandomGenerator
- typia/lib/transformers/features/miscellaneous/CreateRandomGenerator.js
- typia/lib/transformers/features/miscellaneous/CreateValidateCloneTransformer
- typia/lib/transformers/features/miscellaneous/CreateValidateCloneTransformer.js
- typia/lib/transformers/features/miscellaneous/CreateValidatePruneTransformer
- typia/lib/transformers/features/miscellaneous/CreateValidatePruneTransformer.js
- typia/lib/transformers/features/miscellaneous/IsCloneTransformer
- typia/lib/transformers/features/miscellaneous/IsCloneTransformer.js
- typia/lib/transformers/features/miscellaneous/IsPruneTransformer
- typia/lib/transformers/features/miscellaneous/IsPruneTransformer.js
- typia/lib/transformers/features/miscellaneous/MetadataTransformer
- typia/lib/transformers/features/miscellaneous/MetadataTransformer.js
- typia/lib/transformers/features/miscellaneous/PruneTransformer
- typia/lib/transformers/features/miscellaneous/PruneTransformer.js
- typia/lib/transformers/features/miscellaneous/RandomTransformer
- typia/lib/transformers/features/miscellaneous/RandomTransformer.js
- typia/lib/transformers/features/miscellaneous/ValidateCloneTransformer
- typia/lib/transformers/features/miscellaneous/ValidateCloneTransformer.js
- typia/lib/transformers/features/miscellaneous/ValidatePruneTransformer
- typia/lib/transformers/features/miscellaneous/ValidatePruneTransformer.js
- typia/lib/transformers/features/parsers/AssertParseTransformer
- typia/lib/transformers/features/parsers/AssertParseTransformer.js
- typia/lib/transformers/features/parsers/CreateAssertParseTransformer
- typia/lib/transformers/features/parsers/CreateAssertParseTransformer.js
- typia/lib/transformers/features/parsers/CreateIsParseTransformer
- typia/lib/transformers/features/parsers/CreateIsParseTransformer.js
- typia/lib/transformers/features/parsers/CreateValidateParseTransformer
- typia/lib/transformers/features/parsers/CreateValidateParseTransformer.js
- typia/lib/transformers/features/parsers/IsParseTransformer
- typia/lib/transformers/features/parsers/IsParseTransformer.js
- typia/lib/transformers/features/parsers/ValidateParseTransformer
- typia/lib/transformers/features/parsers/ValidateParseTransformer.js
- typia/lib/transformers/features/stringifiers/AssertStringifyTransformer
- typia/lib/transformers/features/stringifiers/AssertStringifyTransformer.js
- typia/lib/transformers/features/stringifiers/CreateAssertStringifyTransformer
- typia/lib/transformers/features/stringifiers/CreateAssertStringifyTransformer.js
- typia/lib/transformers/features/stringifiers/CreateIsStringifyTransformer
- typia/lib/transformers/features/stringifiers/CreateIsStringifyTransformer.js
- typia/lib/transformers/features/stringifiers/CreateStringifyTransformer
- typia/lib/transformers/features/stringifiers/CreateStringifyTransformer.js
- typia/lib/transformers/features/stringifiers/CreateValidateStringifyProgrammer
- typia/lib/transformers/features/stringifiers/CreateValidateStringifyProgrammer.js
- typia/lib/transformers/features/stringifiers/IsStringifyTransformer
- typia/lib/transformers/features/stringifiers/IsStringifyTransformer.js
- typia/lib/transformers/features/stringifiers/StringifyTransformer
- typia/lib/transformers/features/stringifiers/StringifyTransformer.js
- typia/lib/transformers/features/stringifiers/ValidateStringifyTransformer
- typia/lib/transformers/features/stringifiers/ValidateStringifyTransformer.js
- typia/lib/transformers/features/validators/AssertTransformer
- typia/lib/transformers/features/validators/AssertTransformer.js
- typia/lib/transformers/features/validators/CreateAssertTransformer
- typia/lib/transformers/features/validators/CreateAssertTransformer.js
- typia/lib/transformers/features/validators/CreateIsTransformer
- typia/lib/transformers/features/validators/CreateIsTransformer.js
- typia/lib/transformers/features/validators/CreateValidateTransformer
- typia/lib/transformers/features/validators/CreateValidateTransformer.js
- typia/lib/transformers/features/validators/IsTransformer
- typia/lib/transformers/features/validators/IsTransformer.js
- typia/lib/transformers/features/validators/ValidateTransformer
- typia/lib/transformers/features/validators/ValidateTransformer.js
- typia/lib/typings/Atomic
- typia/lib/typings/Atomic.js
- typia/lib/typings/ClassProperties
- typia/lib/typings/ClassProperties.js
- typia/lib/typings/OmitNever
- typia/lib/typings/OmitNever.js
- typia/lib/typings/SpecialFields
- typia/lib/typings/SpecialFields.js
- typia/lib/typings/Writable
- typia/lib/typings/Writable.js
- typia/lib/utils/ArrayUtil
- typia/lib/utils/ArrayUtil.js
- typia/lib/utils/Escaper
- typia/lib/utils/Escaper.js
- typia/lib/utils/MapUtil
- typia/lib/utils/MapUtil.js
- typia/lib/utils/PatternUtil
- typia/lib/utils/PatternUtil.js
- typia/lib/utils/RandomGenerator
- typia/lib/utils/RandomGenerator.js
- typia/lib/utils/Singleton
- typia/lib/utils/Singleton.js
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (typia) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
Typia
// RUNTIME VALIDATORS
export function is<T>(input: unknown | T): input is T; // returns boolean
export function assert<T>(input: unknown | T): T; // throws TypeGuardError
export function validate<T>(input: unknown | T): IValidation<T>; // detailed
// STRICT VALIDATORS
export function equals<T>(input: unknown | T): input is T;
export function assertEquals<T>(input: unknown | T): T;
export function validateEquals<T>(input: unknown | T): IValidation<T>;
// JSON
export function application<T>(): IJsonApplication; // JSON schema
export function assertParse<T>(input: string): T; // type safe parser
export function assertStringify<T>(input: T): string; // safe and faster
// +) isParse, validateParse
// +) stringify, isStringify, validateStringify
// MISC
export function random<T>(): Primitive<T>; // generate random data
export function clone<T>(input: T): Primitive<T>; // hard copy
export function prune<T extends object>(input: T): void; // erase extra props
// +) isClone, assertClone, validateClone
// +) isPrune, assertPrune, validatePrunetypia is a transformer library of TypeScript, supporting below features:
- Super-fast Runtime Validators
- Safe JSON parse and fast stringify functions
- JSON schema generator
- Random data generator
All functions in typia require only one line. You don't need any extra dedication like JSON schema definitions or decorator function calls. Just call typia function with only one line like typia.assert<T>(input).
Also, as typia performs AOT (Ahead of Time) compilation skill, its performance is much faster than other competitive libaries. For an example, when comparing validate function is() with other competitive libraries, typia is maximum 15,000x times faster than class-validator.
Measured on Intel i5-1135g7, Surface Pro 8
Sponsors and Backers
Thanks for your support.
Your donation would encourage typia development.
Setup
Setup Wizard
npx typia setupJust type npx typia setup, that's all.
If you've installed ttypescript build during setup, you have to compile typia utilization code through ttsc command instead of tsc. Otherwise, you've chosen ts-patch, you can use original tsc command.
# COMPILE THROUGH TTYPESCRIPT
npx ttsc
# RUN TS-NODE WITH TTYPESCRIPT
npx ts-node -C ttypescript src/index.tsManual Setup
If you want to install and setup typia manually, read Guide Documents - Setup.
Vite
When you want to setup typia on your frontend project with vite, just configure vite.config.ts like below.
Also, don't forget running Setup Wizard before.
If you've chosen ts-patch compiler, just call only typescript() function.
import { defineConfig } from "vite";
import react from "@vitejs/plugin-react";
import typescript from "@rollup/plugin-typescript";
import ttsc from "ttypescript";
// https://vitejs.dev/config/
export default defineConfig({
plugins: [
react(),
// when using "ttypescript"
typescript({
typescript: ttsc,
}),
// otherwise using "ts-patch"
typescript()
]
});Features
In here README documents, only summarized informations are provided.
For more details, refer to the Guide Documents (wiki).
- Runtime Validators
- Enhanced JSON
- Miscellaneous
Runtime Validators
// ALLOW SUPERFLUOUS PROPERTIES
export function is<T>(input: T | unknown): input is T; // returns boolean
export function assert<T>(input: T | unknown): T; // throws `TypeGuardError`
export function validate<T>(input: T | unknown): IValidation<T>; // detailed
// DO NOT ALLOW SUPERFLUOUS PROPERTIES
export function equals<T>(input: T | unknown): input is T;
export function assertEquals<T>(input: T | unknown): T;
export function validateEquals<T>(input: T | unknown): IValidation<T>;
// REUSABLE FACTORY FUNCTIONS
export function createIs<T>(): (input: unknown) => input is T;
export function createAssert<T>(): (input: unknown) => T;
export function createValidate<T>(): (input: unknown) => IValidation<T>;
export function createEquals<T>(): (input: unknown) => input is T;
export function createAssertEquals<T>(): (input: unknown) => T;
export function createValidateEquals<T>(): (input: unknown) => IValidation<T>;typia supports three type of validator functions:
is(): returnsfalseif not matched with the typeTassert(): throws aTypeGuardErrorwhen not matchedvalidate()- when matched, returns
IValidation.ISuccess<T>withvalueproperty - when not matched, returns
IValidation.IFailurewitherrorsproperty
- when matched, returns
Also, if you want more strict validator functions that even do not allowing superfluous properties not written in the type T, you can use those functions instead; equals(), assertEquals(), validateEquals(). Otherwise you want to create resuable validator functions, you can utilize factory functions like createIs() instead.
When you want to add special validation logics, like limiting range of numeric values, you can do it through comment tags. If you want to know about it, visit the Guide Documents (Features > Runtime Validators > Comment Tags).
Enhanced JSON
// JSON SCHEMA GENERATOR
export function application<
Types extends unknown[],
Purpose extends "swagger" | "ajv" = "swagger",
Prefix extends string = Purpose extends "swagger"
? "#/components/schemas"
: "components#/schemas",
>(): IJsonApplication;
// SAFE PARSER FUNCTIONS
export function isParse<T>(input: string): T | null;
export function assertParse<T>(input: string): T;
export function validateParse<T>(input: string): IValidation<T>;
// FASTER STRINGIFY FUNCTIONS
export function stringify<T>(input: T): string; // unsafe
export function isStringify<T>(input: T): string | null; // safe
export function assertStringify<T>(input: T): string;
export function validateStringify<T>(input: T): IValidation<string>;
// FACTORY FUNCTIONS
export function createAssertParse<T>(): (input: string) => T;
export function createAssertStringify<T>(): (input: T) => string;
// +) createIsParse, createValidateParse
// +) createStringify, createIsStringify, createValidateStringifytypia supports enhanced JSON functions.
application(): generate JSON schema with only one line- you can complement JSON schema contents through comment tags
assertParse(): parse JSON string safely with type validationisStringify(): maximum 10x faster JSON stringify fuction even type safe
Measured on AMD R7 6800HS
Miscellaneous
export function random<T>(): Primitive<T>; // random data generator
export function clone<T>(input: T): Primitive<T>; // deep copy
export function prune<T>(input: T): void; // remove superfluous propertiesWhen you need test data, just generate it through typia.random<T>().
If a little bit special data being required, use (Features > Runtime Validators > Comment Tags)
Appendix
Nestia
Nestia is a set of helper libraries for NestJS, supporting below features:
@nestia/core: 15,000x times faster validation decorators@nestia/sdk: evolved SDK and Swagger generators- SDK (Software Development Kit)
- interaction library for client developers
- almost same with tRPC
- SDK (Software Development Kit)
nestia: just CLI (command line interface) tool

Reactia
Not published yet, but soon
Reactia is an automatic React components generator, just by analyzing TypeScript type.
@reactia/core: Core Library analyzing TypeScript type@reactia/mui: Material UI Theme forcoreandnest@reactia/nest: Automatic Frontend Application Builder forNestJS

When you want to automate an individual component, just use @reactia/core.
import ReactDOM from "react-dom";
import typia from "typia";
import { ReactiaComponent } from "@reactia/core";
import { MuiInputTheme } from "@reactia/mui";
const RequestInput = ReactiaComponent<IRequestDto>(MuiInputTheme());
const input: IRequestDto = { ... };
ReactDOM.render(
<RequestInput input={input} />,
document.body
);Otherwise, you can fully automate frontend application development through @reactia/nest.
import React from "react";
import ReactDOM from "react-dom";
import { ISwagger } "@nestia/swagger";
import { MuiApplicationTheme } from "@reactia/mui";
import { ReactiaApplication } from "@reactia/nest";
const swagger: ISwagger = await import("./swagger.json");
const App: React.FC = ReactiaApplication(MuiApplicationTheme())(swagger);
ReactDOM.render(
<App />,
document.body
);