返回 Skill 列表
extension
分类: 开发与工程无需 API Key

runtime-type-reconstruction

在运行时验证数据时使用。在解析JSON时使用。当类型需要运行时检查时使用。在使用io-ts或zod时使用。在构建验证模式时使用。

person作者: jakexiaohubgithub

Know How to Reconstruct Types at Runtime

Overview

TypeScript types are erased at runtime, but sometimes you need to validate that runtime data matches your types. Use libraries like io-ts, zod, or runtypes to define schemas that provide both runtime validation and static types. This ensures your types match reality.

When to Use This Skill

  • Validating data at runtime
  • Parsing JSON with type safety
  • Types need runtime checks
  • Using io-ts, zod, or runtypes
  • Building validation schemas

The Iron Rule

Use validation libraries like zod or io-ts to get both runtime validation and TypeScript types from a single source of truth.

Example with Zod

import { z } from 'zod';

// Define schema once
const UserSchema = z.object({
  id: z.string(),
  name: z.string(),
  email: z.string().email(),
  age: z.number().optional(),
});

// Get TypeScript type from schema
type User = z.infer<typeof UserSchema>;

// Runtime validation
const result = UserSchema.safeParse(unknownData);
if (result.success) {
  // result.data is typed as User
  console.log(result.data.name);
} else {
  console.error(result.error);
}

Reference

  • Effective TypeScript, 2nd Edition by Dan Vanderkam
  • Item 74: Know How to Reconstruct Types at Runtime