TypeScript 函数式编程函数库项目邀请

214 阅读3分钟

构建一个自己的函数库,欢迎加入!

大家好,我是 [辛克莱],一个充满热情但实际上还有很多要学的开发者。我在尝试发起一个项目,希望能够和一群热爱编程的人一起构建一个简单而实用的函数库。我知道自己还有很多要学,所以非常欢迎各位一起来分享经验和共同进步!

为什么要加入?

学习和成长

这个项目不是专业的、大型的,也没有什么名气,但正因如此,这里是个学习和成长的好地方。无论你是初学者还是有经验的开发者,我们都可以在这里相互学习,互帮互助。

贡献开源社区

我一直觉得开源是个很酷的概念,虽然自己的水平有限,但希望通过这个小项目能够为开源社区添砖加瓦。你的每一点贡献,都是对整个开源社区的积极贡献。

建立合作关系

这里不会有等级或者评价,每个人都是从零开始,都有着不同的经验。通过与其他开发者的互动,我们可以建立联系,一起度过这个编程的冒险之旅。

项目目标

我们的目标很简单,就是构建一些简单但实用的功能,尽量覆盖前端的一些常见场景。不追求完美,只求能够解决问题。

  • 功能
import { map, each, filter, pipe, curry, Functor, Maybe } from 'vutinajs';
const double = curry(map)((x) => x * 2);
const even = curry(filter)((x) => x % 2 === 0);
const log = curry(each)((x) => console.log(x));

const data = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
pipe(even, double, log)(data); // 4 8 12 16 20

const functor = Functor(10)
  .map((value) => value * 2)
  .map((value) => value * 10);
console.log(functor.value); // 200

console.log(Maybe(null).map((value) => value * 20).value);
// 在ts环境下会报错提示value可能为null,在js环境下输出null

// 还有很多方法就不一一展示了,如果你感兴趣的话,可以加入这个项目我们一起学习

1、自动柯里化还未处理

2、异步函数的组合还未处理

3、面向切面还未编写

4、还有更多的方法和模块等待各位来发现和编写...

如何加入?

  1. 克隆仓库:首先,克隆我们的 GitHub 仓库
  2. 选择任务:看看你想写什么函数,挑选一些你感兴趣的,去编写你的代码。
  3. 发起 PR:完成任务后,发起一个 Pull Request,我们会一起审查并讨论。

技术栈

我们的技术栈很简单,主要以 JavaScript/TypeScript 为主,测试用 Jest,文档使用 Markdown。

项目结构

/vutina-js
  /dist       # 打包目录
  /package    # 源代码目录
     / fn
     / fp
     / functor
     / ...
  /tests      # 测试目录
  README.md   # 项目文档

代码质量

我们不强求完美,但希望大家能够写出可读性好、简单明了的代码。无论你的水平如何,我们都乐于提供帮助和反馈。

联系我们

如果你对这个小项目感兴趣,欢迎加入我们。在那里,你可以提问、讨论问题,也可以分享你的经验和见解。

最后的话

这个项目可能并不起眼,但我们一直在努力。希望大家能够以一颗谦卑的心,一同参与,一同进步。无论你的水平如何,你都是我们团队中的重要一员。

让我们一起努力,打造一个小而美的函数库吧!🚀