TypeScript 去类型
把 TypeScript 源码里的类型注解、interface、泛型等去掉,输出可直接运行的 JavaScript;保守词法处理,拿不准的结构一律原样保留。
>_ 使用指南 · GUIDE
把 TypeScript 源码里的类型注解、interface、泛型等类型相关语法去掉,输出可直接运行的 JavaScript。它采用保守的词法处理——拿不准的结构一律原样保留,宁可留着一点类型语法,也不擅自改动你的逻辑。
要清楚它是「去类型」而不是完整编译:它不做类型检查(不会有类型错误提示)、不降级新语法(可选链、装饰器之类不会转译)、对装饰器等复杂结构会原样保留。它适合的场景是快速试跑一段代码、把示例里的 TS 粘贴成能直接执行的 JS。但它不替代正式的构建流程——需要类型安全或目标环境兼容时,仍应使用 tsc 或 babel。
典型步骤:
- 粘贴 TS 源码:把待处理的 TypeScript 整段贴入
- 执行去类型:运行转换
- 检查输出与类型残留:确认逻辑未变、留意未去掉的语法
- 复制可运行 JS:拿去直接运行或粘进浏览器控制台
>_ 常见问题 · FAQ
Q1 · 这个工具会做类型检查吗?
不会。它只做去类型,删掉类型注解、interface、泛型等语法,不校验类型是否正确,因此不会报类型错误。要类型检查请用 tsc,本工具的定位是让带类型的代码能快速跑起来。
Q2 · 为什么有些类型没被去掉?
因为它采用保守策略:遇到无法安全判定的复杂结构(如某些装饰器、类型与运行时代码混写的写法),会原样保留而不是冒险删除,以免破坏逻辑。所以输出里可能残留少量类型语法,这是刻意为之——宁可留一点,也不改错。
Q3 · 和 tsc / babel 有什么区别?
tsc 是完整的 TypeScript 编译器,做类型检查并可把新语法降级到目标版本;babel 通过插件做语法转换与降级。本工具两者都不是:它只做轻量的词法去类型、不检查类型、不降级语法,胜在「贴进去就能跑」的即时性,适合临时试跑而非正式构建。
Q4 · 支持装饰器、enum 吗?
对 enum 这类会生成运行时代码的语法,以及装饰器这类复杂结构,本工具倾向于原样保留,避免错误转换。若你的代码重度依赖装饰器或 enum 的运行语义,建议改用 tsc 或 babel 处理,以确保输出行为正确。
Q5 · 和「JSON 转 TS 类型」工具的分工是什么?
方向相反:JSON 转 TypeScript 类型(json2type)负责生成类型——从一段 JSON 数据推导出 interface;本工具负责移除类型——把已有 TS 里的类型语法删掉。一个造类型,一个去类型,配合使用即可在「有数据结构」和「要跑起来」之间来回。