UNPKG

jsinterface

Version:

Implement duck-type interfaces in Node JS

49 lines (38 loc) 1.15 kB
# jsinterface Define, enforce, and wrap duck-type interfaces to objects in Node JS ```js var jsInterface = require('jsinterface'); jsInterface.define({name: 'interface1', methods: ['method1'], properties: ['prop1']}); var module1 = { method1: function() { }, method2: function() { }, prop1: 'test', prop2: false }; var module2 = { method1: function() { }, prop2: false }; // runs - no error jsInterface.checkComplies(module1, 'interface1'); // returns true console.log(jsInterface.complies(module1, 'interface1')); // true // throws error try { jsInterface.checkComplies(module2, 'interface1'); } catch(err) { console.log(err.name); // MissingPropertyError } // returns false console.log(jsInterface.complies(module2, 'interface1')); // false // only interface fields & properties will be available on if1Module1 var wrapped1 = jsInterface.wrap(module1, 'interface1'); console.log(typeof wrapped1.method1); // function console.log(typeof wrapped1.method2); // undefined // throws error try { var wrapped2 = jsInterface.wrap(module2, 'interface1'); } catch(err) { console.log(err.name); // MissingPropertyError } ```