I really like to use classes for interfaces in order to split up code and have a clean code base. Go figure in one of my projects. The actual implementation goes someplace else, usually other files.
Example:
// my-class.js
module.exports = class MyClass {
/**
* Lengthy description
*/
foo() { throw 'Not Implemented: foo'; };
// more of that
};
// in some other file:
require('./my-class.js').prototype.foo = function() {
// actually do something useful here!
};
Also, creating real mixins for object composition is super easy with the class sugar!
Example:
class MyClass extends mix(MyBaseClass).with(Mixin1, Mixin2) {
// implementation or interface or w/e
};