Генераторы имеют особый синтаксис. Заключается он в добавлении звёздочки к определениям функций, за исключением стрелочных функций и объявлений геттеров и сеттеров. В результате получаются объявления функций и методов, функциональные выражения, и даже конструкторы.
// Объявление генератора
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"]() {}
};