From Reddit User egonelbre
It's too complicated. I don't mean in the sense it's hard to understand how it works but in a sense it's too much work to use it.
You could write it to be easier to use, for example:
Example = Interface({
doOther : [Integer, String],
doThing : [Integer, Integer]
});
ChildClass = Class(
ParentClass,
[Example],
{
init : function(){
//
},
doOther : [ [Integer, String],
function(a, b){
return a + b.length;
}],
doThing : [[Integer, Integer]
function(a, b){
return a * b;
}]
})
// class declaration
Class(parentClass,
mustImplementInterfaces,
methods);
// where method can be declared
// in several ways
{
methodName: func
methodName: [ signature, func ]
}