请求确认tsc是否支持将ES2017+目标的async/await转译为Generator函数
关于tsc转译async/await为Generator函数的问题解答
- 当前tsc不支持在目标版本≥ES2017时,将async/await转译为Generator函数
- TypeScript的转译逻辑是:当目标环境原生支持async/await(ES2017及以上),tsc会直接保留原生语法,不会做额外转译;只有当目标版本低于ES2017时,才会把async/await转译为基于Generator+Runtime或者Promise回调的兼容代码,但这是针对低版本环境的降级处理。
- 未来支持的可能性极低
- TypeScript的核心定位是类型检查+贴合目标环境的语法转译,这类“强制将原生支持的语法转译为另一种等效实现”的定制化需求,不在官方的核心规划内,目前也没有相关公开计划。
- 替代方案建议
- 如果必须仅依赖tsc,可将
target配置设为ES2016或更低版本,此时tsc会自动把async/await转译为Generator相关代码,但代价是其他ES2017+语法也会被降级。 - 更合理的方式是结合tsc与Babel:用tsc完成类型检查,用Babel的对应插件处理async/await到Generator的转译,兼顾类型安全和定制化转译需求。
- 如果必须仅依赖tsc,可将
内容的提问来源于stack exchange,提问作者Dominic
相关产品推荐
相关产品推荐

