ES6 Классы: Неожиданный токен в script?

Я копирую пример, пытаясь узнать ES6, но я получаю ошибку компиляции:

Unexpected token (2:5)

Кажется, что речь идет о count = 0;

Что я делаю неправильно?

class Counter {
    count = 0;

    constructor() {
        setInterval(function() {
            this.tick();
        }.bind(this), 1000);
    }

    tick() {
        this.count ++;
        console.log(this.count);
    }
}

Ответ 1

В ES2015 при использовании синтаксиса class вам необходимо определить переменные экземпляра либо в конструкторе, либо в одном из методов (есть предложение для следующей итерации ES2016, чтобы разрешить ваш синтаксис: Поля ES и статические свойства)

class Counter {

    constructor() {
        this.count = 0;
        setInterval(function() {
            this.tick();
        }.bind(this), 1000);
    }

    tick() {
        this.count++;
        console.log(this.count);
    }
}

var c = new Counter();

Проверьте скрипт:

http://www.es6fiddle.net/ifjtvu5f/

Ответ 2

Возможно, это проблема с компилятором. Проверьте, какую версию Babel вы используете.
В моем случае я пропустил зависимость babel-preset-stage-0.

Ответ 3

На 3 года позже, так что вы, наверное, поняли это, но я поместил переменную count в конструктор

class Counter {
    constructor(count = 0) {
      this.count = count
        setInterval(function() {
            this.tick();
        }.bind(this), 1000);
    }

    tick() {
        this.count ++;
        console.log(this.count);
    }
}

let counter = new Counter;
counter.tick()

дал ему больше контроля, вызвав функцию галочки

class Counter {
    constructor(count = 0) {
      this.count = count;
    }

    tick() {
        let count = this.count;
        setInterval(function() {
         console.log(count++);
        }, 1000);
    }
}
let counter = new Counter;

// counter.tick()