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

TypeScript类方法如何支持传入箭头函数修改属性后执行保存

实现方案

这个需求完全可以实现,只需要调整save方法的参数逻辑,支持传入回调函数即可。

改造后的类代码

export class myClass {
    a = 'bar';
    b = 0;

    // 定义方法重载,保证TS类型提示正常
    save(): void;
    save(updateFn: (instance: myClass) => void): void;
    save(x: any = null): void {
        // 如果传入的是回调函数,先执行回调修改当前实例属性
        if (typeof x === 'function') {
            x(this);
        }
        // 原有保存所有属性的逻辑
        //...
    }
}

调用说明

改造完成后即可直接使用你期望的调用形式:

this.foo.save(c => c.b = 3)

回调的参数c就是当前myClass的实例,你可以在回调内一次性修改多个属性,回调执行完成后才会触发原有保存逻辑。相比你之前的两种写法,该方案还保留了完整的TS类型提示,不会丢失类型校验能力。

内容的提问来源于stack exchange,提问作者Ben Robinson

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 14:45:03