Foreslash 是一个 Javascript 工具库,包含大量实用函数。
Foreslash is a Javascript utilities lib which contains plenty of practical functions.
此库提供了诸如curry
、pipe
等函数式编程的方法,但若无特殊说明,此库的任何方法都不是柯里化的。
- 这是出于性能优化和调试方便的考量。
此库的柯里化方法curry
和柯里化占位符_
与 ramda 兼容。
若无特殊说明,此库的任何方法都是不可变的,即不会修改传入的原数据,返回值将是一个新的数据。
此库使用 typescript 编写,并使用 jest 和 ts-jest 来单元测试。
npm install foreslash # 使用 npm 安装
yarn add foreslash # 使用 yarn 安装
pnpm install foreslash # 使用 pnpm 安装
// curry & randomString
import { _, curry, randomString } from 'foreslash'
randomString(3) // 'bcD' or 'T30' or '7c5' or ...
const curriedRanStr = curry(randomString)
const randomABCD = curriedRanStr(_, 'ABCD')
randomABCD(3) // 'BDC' or 'ACD' or 'DBB' or ...
const random1234 = curriedRanStr(_, '1234')
random1234(3) // '431' or '213' or '241' or ...
// fastClone
import { fastClone } from 'foreslash'
const obj = { a: { b: { c: {} } }, map: new Map() }
obj.a.b.c.d = obj
obj.map.set(obj, 'val')
const clone = fastClone(obj)
clone === obj // false
// clone Deep
clone.a.b.c === obj.a.b.c // false
clone.a.b.c.d === clone // true
// clone Map
clone.map === obj.map // false
clone.map.get(clone) === 'val' // true
此库兼容任何能正确运行 ES6 代码的 Javascript 环境,包括 node.js 和浏览器
此库没有 polyfill,如果要在旧版浏览器中使用,请使用 core-js 或其他 polyfill 工具
此库使用 ES6(ES2015) 语法,如果要在旧版浏览器中使用,请使用 babel 或其他打包/转译工具