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

TSLint为何移除对象键?本地生产构建无报错原因咨询

为什么对象键被TSLint移除后仍能正常编译?

别担心,这完全是正常现象,背后是ES6(ECMAScript 2015)引入的对象字面量简写语法,TypeScript对这个特性提供了完整支持,所以编译不会报错,下面给你详细说清楚:

1. 简写语法的本质

当你在对象字面量里写{ key: key }的时候,如果键名和赋值的变量名完全一致,ES6允许你直接简写为{ key }——这两种写法在功能上完全等价,编译后的JavaScript代码也是一模一样的。

拿你的代码举例:

// 格式化前的完整写法
this.streamsDataModelDistance = new SimpleStreamsDataModel({ 
  polylineValueModels: polylineValueModels, 
  fields: this.settingsModel.fields, 
  commuters: distanceCommuters 
});

// TSLint格式化后的简写写法
this.streamsDataModelDistance = new SimpleStreamsDataModel({ 
  polylineValueModels, 
  fields: this.settingsModel.fields, 
  commuters: distanceCommuters 
});

编译后都会生成相同的JavaScript代码,所以编译器完全能识别,不会抛出任何错误。

2. TSLint自动格式化的原因

这是因为你的TSLint配置中启用了object-literal-shorthand规则(或者类似的代码风格规则)。这个规则的设计目的就是减少代码冗余,自动把符合条件的键值对转换成简写形式,是很多主流代码风格指南(比如Airbnb JavaScript规范)推荐的写法。

3. 关于提交到主干分支的建议

完全可以放心提交!这种简写形式是社区广泛接受的规范写法,和原代码没有任何功能差异。

如果你实在不习惯这个自动格式化行为,可以修改TSLint配置文件,把object-literal-shorthand规则设置为off或者never,这样TSLint就不会再自动移除键名了。

内容的提问来源于stack exchange,提问作者porta.nigra

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:24:45