ES7 decoratorでEventEmitterをmixinするパッケージつくった

github.com www.npmjs.com

継承できない / したくないけど EventEmitter なクラスを作りたい事がよくあるので、デコレータつかって mixin できるパッケージを作ってみた。

使い方

babel で stage 0 するの前提です。

import EventEmitter from 'eventemitter-decorator';

@EventEmitter
class Foo {}

const foo = new Foo();
foo.on('hello', (name) => console.log(`hello, ${name}!!`));

foo.emit('hello', 'world');  // 'hello, world!!'

ES7 Decorator

デコレータデビューして満足
azuさんの資料で雰囲気よんで、wycatsのproposal見ながら書いた

Decorators進捗 github.com

WeakMap使ってる

mixin したクラスのインスタンス毎に new EventEmitter() して WeakMap に突っ込んでる。
まだ require("babel/polyfill"); してないのでブラウザで動かなくて不便。WeakMap使うのやめようかなあ