【发布时间】:2026-01-11 14:50:01
【问题描述】:
考虑到有一个项目需要从 TypeScript 转换为 Babel,文件包含不能被 Babel 忽略的类型信息。
如何以自动方式从整个代码库中剥离 TS 类型注释和断言?
有没有办法将它们转换为Flow(考虑到某些TS类型的功能可以转换而有些不能)?
显然,这不能通过正则表达式获得。
该项目的代码中有很多 TS/ES.next 功能,并且应该是可读和可编辑的,这里不能使用 es6 目标进行编译。
【问题讨论】:
-
如果你把你的 typescript 目标放到 es6 上,你基本上会在编译时“剥离”类型注释。这能回答你的第一个问题吗?对于你的第二个问题,我不知道。
-
@PelleJacobs 抱歉,应该明确提及这一点:代码应该保持良好的状态。转译会杀死所有格式和 ES.next 功能,并将代码变成 ES6 的蒸汽堆。
-
嗯。我很确定这是你唯一的选择。恕我直言,编译后的代码相当不错,他们花了相当长的时间使其格式正确,以至于它被用于教授 javascript 代码样式。如果实在不行,就直接在github项目上开一个issue吧。
-
@PelleJacobs 遗憾的是,这不是一个选择。装饰器、异步函数等都被破坏了,类属性上的 JSDoc cmets 被 ES6 目标删除。我想我会打开一个问题,但我很确定它不会在未来几年内获得优先考虑。
-
tsc --target esnext只会转译装饰器。所有其他语法都将保持不变。
标签: javascript typescript flowtype ecmascript-next