4 ms·
Closures aren't reusable across a whole program unlike classes since their type isn't named, and they don't allow to have more than one operation on the data he
by jcelerier 4y ago
Closures aren't reusable across a whole program unlike classes since their type isn't named, and they don't allow to have more than one operation on the data held by the closure. They really are "poor man's objects" ;p
- uryga 4y agothey allow as many operations as you need, just pass in a "method name" :) const p = Point(3, 5) p('getX') // 3 p('up', 11)('toString') // "Point(3, 16)" const Point = (x, y) => (method, ...args) => { switch (method) { case 'getX': return x; case 'getY': return y; case 'toString': return `Point(${x}, ${y})` case 'up': return Point(x, y+args[0]); // ... } } (unfortunately statically typing this statically requires... some work, either sth like [typescript overloads + literal types] or full on dependent types)