https://github.com/samchon/typia
Super-fast/easy runtime validators and serializers via transformation
https://github.com/samchon/typia
agentic-ai ajv checker fast generator hacktoberfest json json-schema llm-function-calling openapi protobuf random runtime stringify transform type typescript validator
Last synced: 4 months ago
JSON representation
Super-fast/easy runtime validators and serializers via transformation
- Host: GitHub
- URL: https://github.com/samchon/typia
- Owner: samchon
- License: mit
- Created: 2022-04-18T18:13:59.000Z (about 4 years ago)
- Default Branch: master
- Last Pushed: 2025-05-08T07:44:15.000Z (about 1 year ago)
- Last Synced: 2025-05-09T01:23:26.883Z (about 1 year ago)
- Topics: agentic-ai, ajv, checker, fast, generator, hacktoberfest, json, json-schema, llm-function-calling, openapi, protobuf, random, runtime, stringify, transform, type, typescript, validator
- Language: TypeScript
- Homepage: https://typia.io/
- Size: 286 MB
- Stars: 5,132
- Watchers: 15
- Forks: 179
- Open Issues: 57
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- Funding: .github/FUNDING.yml
- License: LICENSE
- Code of conduct: CODE_OF_CONDUCT.md
Awesome Lists containing this project
- awesome-github-star - typia - fast/easy runtime validations and serializations through transformation | samchon | 3421 | (TypeScript)
- awesome-typesafe - samchon/typia - Super-fast/easy Runtime validator. (**1. Libraries** / Others)
- awesome - samchon/typia - Super-fast/easy runtime validators and serializers via transformation (TypeScript)
- awesome-starred - samchon/typia - Super-fast/easy runtime validators and serializers via transformation (TypeScript)
- awesome-github-projects - typia - Super-fast/easy runtime validators and serializers via transformation ⭐5,814 `TypeScript` 🔥 (🤖 AI & Machine Learning)
- StarryDivineSky - samchon/typia - validator`)因反射(Reflection)导致的性能低下问题,同时免去了手动编写校验规则的繁琐。其核心优势在于将类型定义直接转化为运行时逻辑,实现“类型即契约”的无缝衔接。**三大核心亮点**:首先,**极致性能**是 typia 的立身之本。在基准测试中,其校验速度可达 `class-validator` 的 200 倍以上,序列化性能比 `JSON.stringify` 快 10 倍。这种飞跃源于它绕过了反射机制,直接通过编译期生成的定制化验证函数操作数据,类似“预先编译好的高速流水线”对比“动态解析的慢速解释器”。 其次,**零学习成本**的设计哲学。开发者只需使用 TypeScript 标准类型注解(如接口、泛型),无需额外学习校验语法或装饰器。最后,**多场景覆盖**的扩展能力。除基础校验外,它支持二进制序列化(如 protobuf)、Swagger 文档生成,甚至能在前端通过 JSON.parse 时自动触发校验。这种“一体式解决方案”避免了在不同工具链间切换的成本,如同用一把瑞士军刀替代了分散的单功能工具。 **硬核原理的通俗化解读**: typia 的工作原理可类比为“类型编译器”。当开发者编写 `interface IUser { name: string; }` 时,typia 的编译器插件会分析这段类型代码,生成对应的 JavaScript 函数,其逻辑类似 `function validate(data) { return typeof data.name === "string"; }`。这一过程发生在代码构建阶段(通过 `tsc` 或 `babel`),因此运行时无需任何类型解析开销。更巧妙的是,typia 会针对嵌套对象、联合类型等复杂场景生成最优化的校验逻辑,例如将 `string | number` 编译为 `typeof val === "string" || typeof val === "number"`,而非低效的递归判断。 通过这种“编译期类型推导→运行时裸操作”的架构,typia 既保留了 TypeScript 的类型安全,又达到了手写优化代码的性能水平。其设计理念与 esbuild、SWC 等现代工具一脉相承——用编译换取运行时自由,最终实现开发者体验与执行效率的双赢。 (前端开发框架及项目 / 多工具库支持或纯JS)
README
# Typia

[](https://github.com/samchon/typia/blob/master/LICENSE)
[](https://www.npmjs.com/package/typia)
[](https://www.npmjs.com/package/typia)
[](https://github.com/samchon/typia/actions?query=workflow%3Abuild)
[](https://typia.io/docs/)
[](https://gurubase.io/g/typia)
[](https://discord.gg/E94XhzrUCZ)
```typescript
// RUNTIME VALIDATORS
export function is(input: unknown): input is T; // returns boolean
export function assert(input: unknown): T; // throws TypeGuardError
export function assertGuard(input: unknown): asserts input is T;
export function validate(input: unknown): IValidation; // detailed
// JSON FUNCTIONS
export namespace json {
export function application(): IJsonApplication; // JSON schema
export function assertParse(input: string): T; // type safe parser
export function assertStringify(input: T): string; // safe and faster
}
// LLM FUNCTION CALLING SCHEMA
export namespace llm {
// application schema from a class or interface type
export function application(): ILlmApplication;
// structured output
export function parameters
(): ILlmSchema.IParameters;
export function schema(): ILlmSchema; // type schema
}
// PROTOCOL BUFFER
export namespace protobuf {
export function message(): string; // Protocol Buffer message
export function assertDecode(buffer: Uint8Array): T; // safe decoder
export function assertEncode(input: T): Uint8Array; // safe encoder
}
// RANDOM GENERATOR
export function random(g?: Partial): T;
```
`typia` is a transformer library supporting below features:
- Super-fast Runtime Validators
- Enhanced JSON schema and serde functions
- LLM function calling schema and structured output
- Protocol Buffer encoder and decoder
- Random data generator
> [!NOTE]
>
> - **Only one line** required, with pure TypeScript type
> - Runtime validator is **20,000x faster** than `class-validator`
> - JSON serialization is **200x faster** than `class-transformer`
## Transformation
If you call `typia` function, it would be compiled like below.
This is the key concept of `typia`, transforming TypeScript type to a runtime function. The `typia.is()` function is transformed to a dedicated type checker by analyzing the target type `T` in the compilation level.
This feature enables developers to ensure type safety in their applications, leveraging TypeScript's static typing while also providing runtime validation. Instead of defining additional schemas, you can simply utilize the pure TypeScript type itself.
```typescript
//----
// examples/checkString.ts
//----
import typia, { tags } from "typia";
export const checkString = typia.createIs();
//----
// examples/checkUUID.js
//----
import typia from "typia";
export const checkString = (() => {
return (input) => "string" === typeof input;
})();
```
## Sponsors
Thanks for your support.
Your donation encourages `typia` development.
Also, `typia` is re-distributing half of donations to core contributors of `typia`.
- [`nonara/ts-patch`](https://github.com/nonara/ts-patch)
- [`ryoppippi/unplugin-typia`](https://github.com/ryoppippi/unplugin-typia)
[](https://opencollective.com/typia)
## Playground
You can experience how typia works by [playground website](https://typia.io/playground):
- 💻 https://typia.io/playground
## Guide Documents
Check out the document in the [website](https://typia.io/docs/):
### 🏠 Home
- [Introduction](https://typia.io/docs/)
- [Setup](https://typia.io/docs/setup/)
- [Pure TypeScript](https://typia.io/docs/pure/)
### 📖 Features
- Runtime Validators
- [`assert()` function](https://typia.io/docs/validators/assert/)
- [`is()` function](https://typia.io/docs/validators/is/)
- [`validate()` function](https://typia.io/docs/validators/validate/)
- [Functional Module](https://typia.io/docs/validators/functional)
- [Special Tags](https://typia.io/docs/validators/tags/)
- Enhanced JSON
- [JSON Schema](https://typia.io/docs/json/schema/)
- [`stringify()` functions](https://typia.io/docs/json/stringify/)
- [`parse()` functions](https://typia.io/docs/json/parse/)
- LLM Function Calling
- [`application()` function](https://typia.io/docs/llm/application/)
- [`parameters()` function](https://typia.io/docs/llm/parameters/)
- [`schema()` function](https://typia.io/docs/llm/schema/)
- [AI Chatbot Development](https://typia.io/docs/llm/chat/)
- [Documentation Strategy](https://typia.io/docs/llm/strategy/)
- Protocol Buffer
- [Message Schema](https://typia.io/docs/protobuf/message)
- [`decode()` functions](https://typia.io/docs/protobuf/decode/)
- [`encode()` functions](https://typia.io/docs/protobuf/encode/)
- [Random Generator](https://typia.io/docs/random/)
- [Miscellaneous](https://typia.io/docs/misc/)
### 🔗 Appendix
- [API Documents](https://typia.io/api)
- Utillization Cases
- [NestJS](https://typia.io/docs/utilization/nestjs/)
- [Prisma](https://typia.io/docs/utilization/prisma/)
- [tRPC](https://typia.io/docs/utilization/trpc/)
- [⇲ Benchmark Result](https://github.com/samchon/typia/tree/master/benchmark/results/11th%20Gen%20Intel(R)%20Core(TM)%20i5-1135G7%20%40%202.40GHz)
- [⇲ `dev.to` Articles](https://dev.to/samchon/series/22474)