Для циклов в TypeScript - PullRequest
       22

Для циклов в TypeScript

1 голос
/ 21 марта 2019

Я исследовал после того, как нашел в tslint правило «предпочитаемое», и кажется, что большинство людей придерживаются мнения, что стандарт для цикла не должен использоваться в машинописи, но я не могу найти никаких аргументов в отношении почему это Я понимаю, что существуют циклы for (... of ...) и for (... in ...), но кажется, что стандарт for все еще может быть полезен в определенных ситуациях. Кто-нибудь может объяснить причину? Это только для удобства чтения или есть какие-то воздействия на производительность, которые делают новые стили лучше?

________________ EDIT ______________

Я провел еще немного исследований и решил посмотреть, в чем разница в визуализированном JavaScript, что показалось мне немного полезным. Хотя стандарт for и for (... in ...) возвращают одинаковые значения, они имеют разные типы, а for (... of ...) возвращает фактические значения в массиве. Итак, теперь я вижу разницу в трех разных подходах, но я не вижу, есть ли что-то большее, чем удобочитаемость, чтобы принять решение о том, что использовать, то есть я не знаю, если for (... of. ..) является более производительным, чем стандартный цикл for, в тех случаях, когда индекс не нужен или если его немного легче читать.

Игровая площадка TypeScript

1 Ответ

0 голосов
/ 21 марта 2019

Мы используем for … of для итерации массивов, потому что это стало общим способом продолжения.Главное, что JavaScript развился.Теперь, общая вещь, которая может быть повторена - это Итератор .

С итератором невозможно получить прямой доступ к данным из его индекса.Но мы все равно можем использовать цикл for … of.

Пример:

const colors = new Map([
  [1, "red"], 
  [2, "green"], 
  [3, "blue"]
]);

for (colorName of colors.values())
  console.log(colorName)

Результат будет:

red
green
blue

Здесь colors.values() возвращает итератор , а не массив.Невозможно получить доступ к его контенту с помощью индекса.

Некоторая документация: Итераторы и генераторы

Что касается производительности, я предлагаю этот тест .Традиционная петля for немного лучше, чем for … of.

...