为什么 tslint 删除对象键?
Why does tslint remove object-keys?
我开始在我的 TypeScript 项目中使用 tslint。当我查看 linted 源代码时,我注意到有时密钥会从对象中删除。
我(在本地)进行了生产构建,没有显示任何错误。这怎么可能?我在网上找不到有关此行为的信息。
之前:
this.streamsDataModelDistance = new SimpleStreamsDataModel({
polylineValueModels: polylineValueModels,
fields: this.settingsModel.fields,
commuters: distanceCommuters
});
之后:
this.streamsDataModelDistance = new SimpleStreamsDataModel({
polylineValueModels,
fields: this.settingsModel.fields,
commuters: distanceCommuters
});
注意丢失的键 "polylineValueModels"。
这如何编译成 JavaScript 而没有错误?我犹豫是否要将其放入后备箱。
这很好而且很方便shorthand。
如果 属性 与变量同名,TypeScript 允许轻松分配对象属性。
const foo = "bar";
const object = {
foo
}
将创建一个包含以下内容的对象:
{
foo: "bar"
}
您刚刚启用了object-literal-shorthand
规则,您可以在tslint.json
文件中设置它。
{
"rules": {
"object-literal-shorthand": false
}
}
https://palantir.github.io/tslint/rules/object-literal-shorthand/
这不是错误,它是 ECMAScript 2015 的标准语法。
In ECMAScript 2015, a shorthand notation is available, so that the keyword "function" is no longer necessary.
// Shorthand property names (ES2015)
var a = 'foo', b = 42, c = {};
var o = {a, b, c};
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Object_initializer
我开始在我的 TypeScript 项目中使用 tslint。当我查看 linted 源代码时,我注意到有时密钥会从对象中删除。
我(在本地)进行了生产构建,没有显示任何错误。这怎么可能?我在网上找不到有关此行为的信息。
之前:
this.streamsDataModelDistance = new SimpleStreamsDataModel({
polylineValueModels: polylineValueModels,
fields: this.settingsModel.fields,
commuters: distanceCommuters
});
之后:
this.streamsDataModelDistance = new SimpleStreamsDataModel({
polylineValueModels,
fields: this.settingsModel.fields,
commuters: distanceCommuters
});
注意丢失的键 "polylineValueModels"。
这如何编译成 JavaScript 而没有错误?我犹豫是否要将其放入后备箱。
这很好而且很方便shorthand。
如果 属性 与变量同名,TypeScript 允许轻松分配对象属性。
const foo = "bar";
const object = {
foo
}
将创建一个包含以下内容的对象:
{
foo: "bar"
}
您刚刚启用了object-literal-shorthand
规则,您可以在tslint.json
文件中设置它。
{
"rules": {
"object-literal-shorthand": false
}
}
https://palantir.github.io/tslint/rules/object-literal-shorthand/
这不是错误,它是 ECMAScript 2015 的标准语法。
In ECMAScript 2015, a shorthand notation is available, so that the keyword "function" is no longer necessary.
// Shorthand property names (ES2015)
var a = 'foo', b = 42, c = {};
var o = {a, b, c};
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Object_initializer