Обойти tslint: одна переменная на объявление

Как кодировать по этому правилу для следующего?

let someArray = [...];
for (let i = 0, n = someArray.length; i < n; i++) {
  ...
}

person unional    schedule 21.11.2016    source источник
comment
Я не знаю ни этого языка, ни цлинта, но представляю себе следующие работы: let i = 0; let n = someArray.length; for (; i<n; i++) { ... }   -  person ikegami    schedule 21.11.2016
comment
Если вам не нравится это правило lint, просто отключите его.   -  person SLaks    schedule 21.11.2016
comment
Да, это звучит как законная причина, чтобы отключить его. Нет необходимости создавать переменную на один уровень выше.   -  person unional    schedule 21.11.2016


Ответы (1)


Это практически классика в JavaScript.

Правило tsLint предназначено для улучшения читабельности вашего кода.

Большинство людей кэшируют длину массива, потому что считают, что это дает преимущество в производительности. Если это единственная причина, по которой вы это делаете, потенциальный предельный выигрыш не стоит затрат на читаемость (и на самом деле это было медленнее, когда я запускал тест JSPerf в своем браузере).

Так что это "рекомендуемое решение tsLint" по умолчанию...

for (let i = 0; i < someArray.length; i++) {

В JavaScript свойство length не повторяет массив, поэтому стоимость незначительна.

Если вы не согласны, вы, конечно, можете отключить правило - вот способ сделать это "комментарий".

/* tslint:disable:one-variable-per-declaration */

Или способ конфигурации:

"one-variable-per-declaration": false

Или в вашем случае вы можете использовать флаг конфигурации, который отключает его только для for циклов:

"one-variable-per-declaration": [true, "ignore-for-loop"]
person Fenton    schedule 21.11.2016