标签: 类型安全

7 个内容

笔记(7)

本文详细介绍了编程中泛型类型参数的逆变与协变概念。协变允许子类型容器向上转型为父类型容器(返回值场景),逆变允许父类型容器向下转型为子类型容器(参数场景)。文章对比了协变、逆变与不变,并解释了引入逆变与协变以兼顾灵活性和类型安全的原因。

Elliot Yang·
130 浏览

本文深入探讨了 NestJS 高级 OpenAPI 实践,包括类型安全响应、ESM 支持、模型冲突解决、Schema 组合及测试策略。强调类型安全、效率、规范和灵活性间的平衡,并展望了基于 TSDoc 的文档生成趋势。

Elliot Yang·
138 浏览

TypeScript 4.9的`satisfies`操作符在确保类型安全的同时,保留了变量的原始类型推断,解决了类型验证与保留的矛盾。它适用于精确属性控制、动态键值约束等场景,优于类型断言。解决递归类型错误需分析根本原因,谨慎使用`skipLibCheck`。

Elliot Yang·
115 浏览

本文深入探讨基于 Monaco Editor 的智能 JSON 编辑器实现,以 Chrome 扩展开发为例,解析技术架构、高级配置技巧与工程化实践。重点包括 Monaco Editor 选型、JSON Schema 管理、响应式 Schema 更新、性能优化、类型安全及调试技巧,并探讨潜在问题与解决方案。最后展望 Schema 即服务、AI 增强提示等前沿技术。

Elliot Yang·
334 浏览

TypeScript的静态类型检查在运行时会丢失类型信息。Zod采用函数式模式组合和类型推断,实现类型安全。class-validator则使用装饰器与类结构绑定,与ORM深度整合。两者各有优劣,选型需考虑项目特点和框架。未来可结合编译时类型检查和混合方案。

Elliot Yang·
114 浏览

TypeScript 4.9 引入 `satisfies` 运算符,旨在解决类型注解和类型推断的矛盾,保留字面量类型信息。它通过验证类型是否满足目标类型,同时保留最具体的推断类型,强化运行时安全,适用于配置对象验证和联合类型精确推断等场景。应权衡使用,避免过度增加编译耗时。

Elliot Yang·
95 浏览

tRPC 支持 `FormData` 和二进制类型(如 `File`, `Blob`, `Uint8Array`)的提交。`FormData` 可以直接使用,也可用 `zod-form-data` 校验。二进制类型会被转换为 `ReadableStream`,可通过 `octetInputParser` 处理。

Elliot Yang·
288 浏览