You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何编写TypeScript代码使其编译后输出指定结构的ES5代码

解决方案

你需要将otherFunction从类成员改为类闭包作用域内的私有辅助函数,不要将其定义为类的属性/方法,对应的TypeScript写法如下:

const Test = (() => {
    // 仅内部可访问的辅助函数,不会挂载到类原型或实例上
    function otherFunction() {}

    class Test {
        method() {
            // 直接调用,无需加this前缀
            otherFunction();
        }
    }

    return Test;
})();

上述代码编译为ES5后,输出结构和你预期的完全一致。

原理解释

你最初的写法将otherFunction定义为类的实例成员,TypeScript编译时会默认将所有类实例成员挂载到构造函数的prototype属性上,符合类成员的运行时访问逻辑。
如果只需要函数在类内部做辅助逻辑使用、不需要对外暴露也不需要访问实例this,就可以把函数定义在类所在的闭包作用域内,既不会污染外部作用域,也不会额外占用原型的存储空间。
注意:TypeScript中给类方法加private修饰符仅能实现编译期的访问限制,运行时该方法依然会被挂载到原型上,无法实现你要的输出效果。

内容的提问来源于stack exchange,提问作者Pramod Jain

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 04:27:00