Почему tslint удаляет объектные ключи? - PullRequest
1 голос
/ 30 октября 2019

Я начал использовать tslint в своем проекте TypeScript. Просматривая источник с пометкой, я заметил, что иногда ключи удалялись из объектов.

Я сделал производственную сборку (локально), и ошибок не было. Как это возможно? Я не смог найти что-то об этом поведении в сети.

До:

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 без ошибок? Я не решаюсь проверить это в багажнике.

Ответы [ 2 ]

3 голосов
/ 30 октября 2019

Вы только что включили правило object-literal-shorthand, вы можете установить его в файле tslint.json.

{
 "rules": {
    "object-literal-shorthand": false
  }
}

https://palantir.github.io/tslint/rules/object-literal-shorthand/

Это не ошибка, этостандартный синтаксис ECMAScript 2015.

В ECMAScript 2015 доступна сокращенная запись, поэтому ключевое слово «function» больше не требуется.

// 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

0 голосов
/ 30 октября 2019

Это хорошо и удобно.

TypeScript позволяет легко назначать свойства объекта, если свойство имеет то же имя, что и переменная.

const foo = "bar";
const object =  {
   foo
}

Создает объект, содержащийиз:

{
    foo: "bar"
}
...