逐步类型化实现器Skill gradual-typing-implementer

这个技能用于实现逐步类型化系统,将类型检查添加到动态类型语言中,支持代码从动态类型迁移到静态类型,构建混合类型系统如TypeScript、Typed Racket或Pyright。关键词包括:逐步类型化、动态类型、静态类型、类型检查、类型系统、代码迁移、混合类型、类型保证、运行时检查、软件开发工具。

架构设计 0 次安装 0 次浏览 更新于 3/13/2026

名称: 逐步类型化实现器 描述: ‘为动态类型语言实现逐步类型化。当:(1) 向动态语言添加类型检查,(2) 支持迁移到静态类型,(3) 混合类型系统时使用。’ 版本: 1.0.0 标签:

  • 类型系统
  • 逐步类型化
  • 动态类型化
  • 混合 难度: 高级 语言:
  • python
  • racket
  • typescript 依赖项:
  • type-checker-generator

逐步类型化实现器

实现桥接静态和动态类型的逐步类型化系统。

何时使用

  • 向动态语言添加类型检查
  • 支持迁移到静态类型
  • 构建混合类型系统
  • 实现类似TypeScript的系统
  • 创建Python/Ruby的类型化方言

此技能的作用

  1. 定义逐步类型 - 静态 + 动态 + ? 类型
  2. 实现类型检查 - 符合逐步保证
  3. 处理转换 - 运行时类型检查
  4. 管理错误 - 类型不匹配报告

关键概念

概念 描述
逐步保证 添加静态类型不改变行为
一致关系 灵活的类型匹配 (★)
未知类型 明确未知类型 (‘?’)
类型精度 动态 < 未知 < 静态

★ 关系

类型 A 类型 B A 一致 B?
int int
int dynamic
dynamic int
int string
(int → int) (dynamic → int)

提示

  • 从简单逐步系统开始
  • 使用 “any” 作为逐步的底
  • 保留动态行为
  • 好的错误消息至关重要
  • 用混合静态/动态代码测试

相关技能

  • type-checker-generator - 静态类型检查
  • type-inference-engine - 类型推断
  • refinement-type-checker - 精炼类型

经典参考

参考 为何重要
Siek & Taha, “逐步类型化功能语言” (2006) 原始逐步类型化
Siek 等, “实践中逐步类型化” 实践逐步类型化
TypeScript 语言规范 生产逐步类型化
类型化 Racket 实践中逐步类型化

权衡和限制

设计权衡

方法 优点 缺点
擦除 简单、快速 运行时开销
具体化 运行时类型信息 内存
责任追踪 清晰错误责任 复杂性

限制

  • 运行时检查开销
  • 无法完全验证静态属性
  • 类型推断更困难
  • 错误消息可能混淆
  • 性能调整复杂

研究工具和成果

实践中逐步类型化:

工具 语言 学习内容
TypeScript JavaScript 生产逐步
Typed Racket Racket 学术
Pyright Python 逐步

研究前沿

1. 责任追踪

  • 目标: 错误本地化

实现陷阱

陷阱 真实后果 解决方案
运行时开销 慢检查 优化