mobx-keystone
Version:
A MobX powered state management solution based on data trees with first class support for TypeScript, snapshots, patches and much more
19 lines (14 loc) • 432 B
text/typescript
export function chainFns<F extends Function>(...fns: (F | undefined)[]): F | undefined {
const definedFns = fns.filter((fn) => !!fn)
if (definedFns.length <= 0) {
return undefined
}
const chainedFn = (v: any, ...args: any[]) => {
let ret = v
for (let i = 0; i < definedFns.length; i++) {
ret = definedFns[i](ret, ...args)
}
return ret
}
return chainedFn as unknown as F
}