02. Generator Syntax

Генераторы имеют особый синтаксис. Заключается он в добавлении звёздочки к определениям функций, за исключением стрелочных функций и объявлений геттеров и сеттеров. В результате получаются объявления функций и методов, функциональные выражения, и даже конструкторы.

// Объявление генератора
function* BindingIdentifer() {}

// Ещё одно объявление не слишком анонимного генератора
export default function*() {}

// Анонимное выражение генератора
(function*() {});

// Определение методов
let object = {
  *methodName() {},
  *["computedName"]() {}
};

// Определение методов в объявлении класса
class C {
  *methodName() {}
  *["computedName"]() {}
}

// Определение статических методов в объявлении класса
class C {
  static *methodName() {}
  static *["computedName"]() {}
}

// Определение методов в выражении класса
let C = class {
  *methodName() {}
  *["computedName"]() {}
};

// Определение статических методов в выражении класса
let C = class {
  static *methodName() {}
  static *["computedName"]() {}
};

Last updated