export class Base { render(value) { console.log("base", value); } dispatch(value) { this.render(value); } } let effects = 0; let defaults = 0; function tick() { return ++effects; } function optionsDefault() { defaults++; return {}; } export class ArityBase { dispatch(value) { this.render(value, tick()); } render(value, time) { console.log("arity base", value, time); } defaulted(value, options = optionsDefault()) { console.log("base default", value, Object.keys(options).length); } dispatchDefault(value) { this.defaulted(value); } } export function arityCounts() { console.log("arity counts", effects, defaults); }