ifjs
v0.0.4
Published
Native implementation of interfaces for js
Downloads
11
Readme
ifjs
Native implementation of interfaces for js
To describe the parameters or return values so you can use native js types (except null and undefined).
var ICalc = new Interface('ICalc', { sum: {args: [Number, Number], result: Number},
dif: {args: [Number, Number], result: Number} });
var IStringConcat = new Interface('IStringConcat', { concat: {args: [String, String], result: String} });
var IMatch = new Interface('IMatch', { match: {args: [RegExp], result: Boolean} });
In addition, in the description of the arguments to a function in the interface (or return values) can be used a constructor function, for example:
function F() {}
F.prototype.fn = function() { return '\' nruter } ()noitcnuf = nf.epytotorp.F'; }
var IFClient = new Interface('IFClient', {
run: [F]
});
function FClient() {}
Class(FClient, null, [IFClient], {
run: function(obj) {
console.log(obj.fn());
};
});
var f = new F();
var fclient = new FClient();
fclient.run(f);
can pass as an interface object, not wrapped new Interface(...)
Class({}, null, [{ fn: [] }], { fn: function() { return 'Yes, we can!'; } });
If you pass only one interface, you can omit the brackets "[...]".
Class({}, null, { fn: { args: [], result: String } },
{ fn: function() { return '1234567890'; } });
More examples are in Russian localization.