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

TypeScript+TSLint环境下不关闭规则,如何安全优化删除对象id键?

解决TSLint no-dynamic-delete 提示的安全高效方案

既然不想修改TSLint配置关闭规则,那我们可以完全遵循规则的设计意图——避开动态计算的属性键,用静态明确的方式删除myObj里的id键,具体有两种靠谱的做法:

  • 直接用静态属性访问语法
    这是最直观高效的方案,因为id是明确已知的固定键名,不属于动态计算范畴,完全符合规则要求:

    // 两种写法都可行,TSLint 不会触发提示
    delete myObj.id;
    // 或者字符串字面量形式
    delete myObj['id'];
    

    这种写法JavaScript引擎能做充分优化,也不存在误删其他属性的风险,安全性和性能都拉满。

  • 用常量类型断言锁定键名类型
    如果习惯用变量管理键名(比如统一维护键名常量),可以通过as const把变量类型锁定为字面量,让TSLint识别出这并非动态计算的键:

    const key = 'id' as const;
    delete myObj[key];
    

    这样既保留了用变量管理键名的灵活性,又满足了规则对非动态键的要求。

再聊下规则的核心逻辑

TSLint的no-dynamic-delete规则之所以禁止动态计算的键,正如官方说明:

Deleting dynamically computed keys is dangerous and not well optimized

动态计算的键(比如delete myObj[someUncontrolledVariable])可能因为变量值不可控导致误删属性,同时JS引擎对这类动态操作的优化空间极小,性能远不如静态键的删除操作。我们上面的方案刚好规避了这些问题,又不用改动TSLint配置。

内容的提问来源于stack exchange,提问作者Ari Seyhun

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 08:49:22