Radash是下一个你不能没有的库。首先,也是最重要的,它很强大。有了这些强大的函数,你就可以得到强大的类型和零依赖性。如果你能踏出一点信心,尝试一下这些函数,我毫不怀疑你会发现自己爱上了它。 官网:radash-docs.vercel.app/docs/gettin…
1. 特色功能
这里有几个我们已经离不开的功能。希望你也会发现它们很有用。
try
_.try函数抽象了try/catch的逻辑分叉,并提供了一个让人联想到错误的第一回调响应。
const [err, response] = await _.try(api.gods.create)({ name: 'Ra' });
if (err) {
throw new Error('Your god is weak and could not be created')
};
range
_.range函数返回一个可用于迭代的生成器。这意味着你再也不用写for (let i) 循环了。
for (const i of _.range(0, 4)) {
console.log(i) // 0, 1, 2, 3, 4
};
for (const i of _.range(10, 20, 2)) {
console.log(i) // 10, 12, 14, 16, 18, 20
};
select
_.select函数接收映射和过滤函数,并在一次迭代中为你一起运行它们。不再因为你需要映射和过滤而写一个reduce,而你又不想为了性能而单独实现它们。
const superPoweredGodsFromEgypt = _.select(
gods,
g => ({ ...g, power: g.power * g.power }),
g => g.culture === 'egypt'
);
defer
_.defer函数让你在运行一个异步函数时注册函数作为清理运行。这就像一个try/finally,但你可以在特定的时间注册finally块。
await _.defer(async (defer) => {
await api.builds.updateStatus('in-progress')
defer((err) => {
api.builds.updateStatus(err ? 'failed' : 'success')
})
fs.mkdir('build')
defer(() => {
fs.unlink('build')
})
await build()
})
objectify
_.objectify 函数帮助你在一个步骤中把一个列表转换为一个对象。通常情况下,我们要么分两步做,要么写一个reduce。
const godsByCulture = _.objectify(gods, g => g.name, g => g.culture)
2. 对标Lodash
Lodash是不可思议的。Radash的目标是提供你所需要的强大功能,而不是现在运行时所提供的功能,并且用伟大的类型和易于阅读和理解的源代码来实现。
3.安装 Radash
使用以下npm或yarn命令安装Radash。
npm install radash
yarn add radash