← 返回工具箱

TypeScript 去类型

TS TO JS · 代码格式化

把 TypeScript 源码里的类型注解、interface、泛型等去掉,输出可直接运行的 JavaScript;保守词法处理,拿不准的结构一律原样保留。

TypeScript 源码
JavaScript 输出
保守词法去类型:删除类型注解、interface、type、泛型、as 断言与访问修饰符;enum / 装饰器 / namespace / .tsx 等拿不准的结构一律原样保留并提示。仅承诺 .ts。

>_ 使用指南 · GUIDE

把 TypeScript 源码里的类型注解、interface、泛型等类型相关语法去掉,输出可直接运行的 JavaScript。它采用保守的词法处理——拿不准的结构一律原样保留,宁可留着一点类型语法,也不擅自改动你的逻辑。

要清楚它是「去类型」而不是完整编译:它不做类型检查(不会有类型错误提示)、不降级新语法(可选链、装饰器之类不会转译)、对装饰器等复杂结构会原样保留。它适合的场景是快速试跑一段代码、把示例里的 TS 粘贴成能直接执行的 JS。但它不替代正式的构建流程——需要类型安全或目标环境兼容时,仍应使用 tsc 或 babel。

典型步骤:

  1. 粘贴 TS 源码:把待处理的 TypeScript 整段贴入
  2. 执行去类型:运行转换
  3. 检查输出与类型残留:确认逻辑未变、留意未去掉的语法
  4. 复制可运行 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 里的类型语法删掉。一个造类型,一个去类型,配合使用即可在「有数据结构」和「要跑起来」之间来回。

嵌入代码

把下面的代码复制到你的网页,即可将本工具嵌入为 iframe(自动隐藏导航与页脚)。

高度px
此工具在你的浏览器本地运行,输入内容不会上传。按 Ctrl K 可随时切换到其他工具。