D言語の契約プログラミングサポートに触発された。 http://www.kmonos.net/alang/d/dbc.html http://www.kmonos.net/alang/d/class.html#invariants Dで実際どこまでできるかはあまりわかってないが、現実的にはこんな感じだろうか。 // $ babel-node --optional es7.decorators index.js class Counter { constructor(initial = 0) { this.current = initial; } @contract up(i) { this.current += i; return this.current; } } function contract(tar, name, desc) { // 事前条件 function before(i