管管屎

Susan Sarandon
Susan Sarandon原创
2024-12-08 01:40:11638浏览

Pipe the shit

我对这篇文章有很多想法,但我不知道从哪里开始。如果您有兴趣使代码更具可读性并使用 Tree Shaking,您绝对应该查看这篇文章。

如果您曾经使用 JavaScript 进行开发,您可能遇到过这种类型的代码。

const someInstance = new Class();
someInstance.do('jump').some().thing('dance').and().read();

我喜欢这种风格,因为它很容易阅读,并且你可以看到其中的联系。另外,您不必将数据从一个函数移动到另一个函数,因为它全部保存在实例中。

除了这仅在函数不异步时才有效这一事实之外,还有另一个问题。如果您不使用内容,那么对内容进行 Tree shake 并不容易。如果你在客户端使用它,你必须移动整个库以及所有连接的函数,这是一个巨大的开销。

那么,我们如何保持内容的可读性,使用异步函数并让 Vite 和 co.树摇所有未使用的代码?

答案就在标题中:“管道”。

从功能的角度来看,实现管道非常简单。然而,这些类型确实带来了挑战。我已将所有内容整合到一个库中并将其发布到 npm 上。管道并组合。

const inc = (by: number) => (x: number) => x + by;
const dec = (by: number) => (x: number) => x - by;
const multiplyBy = (by: number) => (x: number) => x * by;
const divideBy = (by: number) => (x: number) => x / by;
const toStr = () => (x: number) => x.toString();

// prepare the pipeline
const pipeline = pipe(inc(2), multiplyBy(7), dec(7), divideBy(3), toStr())

// Executing the pipeline
pipeline(7)

一个优点是它不绑定到任何对象,因此只要输入和输出与之前和之后的函数匹配即可使用任何函数。

我给出的示例非常简单,但至少您可以通过管道传输所有内容。您将拥有与链接和类相同的选项。泛型函数可能有点棘手,但有一个解决方案。我将在另一篇文章中更详细地介绍这一点。

以上是管管屎的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn