私はパーティーに遅刻していることを知っています。私はそれだけで、あなたの開発者のツールボックスのツールだと/なぜこれをしない理由のメリットを主張しませんが、これは、私はそれを行う方法です。
class.coffee
# ref - http://arcturo.github.io/library/coffeescript/03_classes.html#extending_classes
# ref - http://coffeescriptandnodejs.blogspot.com/2012/09/interfaces-nested-classes-and.html
#
# @nodoc
#
classKeywords = ['extended', 'included', 'implements', 'constructor']
#
# All framework classes should inherit from Class
#
class Class
#
# Utility method for implementing one of more mixin classes.
#
# @param objs [Splat] One or more mixin classes this class will *implement*.
#
@implements: (objs...) ->
for obj in objs
if typeof obj is 'function' and Boolean(obj.name)
obj = obj.prototype
for key, value of obj #when key not in moduleKeywords
# Assign properties to the prototype
if key not in classKeywords
#console.log 'implementing', value.toString(), 'as', key
@::[key] = value
obj.included?.apply(@)
this
#
# Utility method for adding getter/setters on the Class instance
#
# @param prop [String] The name of the getter/setter.
# @param desc [Object] The object with a getter &/or setter methods defined.
#
@property: (prop, desc)-> Object.defineProperty @prototype, prop, desc
duck.coffee
class iQuack
quack: -> throw new Error 'must implement interface method'
interface.quack.coffee 0
class Duck extends Class @implements iQuack quack: -> console.log 'quack, quack'
https://gist.github.com/jusopi/3387db0dd25cd11d91ae