分享更有价值
被信任是一种快乐

如何使用函数式TypeScript代码

文章页正文上

本篇文章给大家分享的是有关如何使用函数式TypeScript代码,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。谈到函数式编程时,我们常提到机制、方法,而不是核心原则。函数式编程不是关于 Monad、Monoid 和 Zipper 这些概念的,虽然它们确实很有用。从根本上来说,函数式编程就是关于如使用通用的可复用函数进行组合编程。本文是我在重构 TypeScript 代码时使用函数式的一些思考的结果。首先,我们需要用到以下几项技术:尽可能使用函数代替简单值数据转换过程管道化提取通用函数来,开始吧!假设我们有两个类,Employee 和 Department。Employee 有 name 和 salary 属性,Department 只是 Employee 的简单集合。我们要重构的是 averageSalary 函数。averageSalary 函数接收 employee 数组、***薪资 minSalary 以及可选的 department 作为参数。如果传了 department 参数,函数会计算该部门中所有员工的平均薪资;若不传,则对全部员工进行计算。该函数的使用方式如下:需求虽简单粗暴,可就算不提代码难以拓展,其混乱是显而易见的。若新增条件,函数签名及接口就不得不发生变动,if 语句也会也越来越臃肿可怕。我们一起用一些函数式编程的办法重构这个函数吧。使用函数代替简单值使用函数代替简单值看起来似乎不太直观,但这却是整理归纳代码的强大办法。在我们的例子中,这样做,意味着要将 minSalary 和 department 参数替换成两个条件检验的函数。我们所做的就是将 salary、department 两个条件接口统一起来。而此前这两个条件是写死的,现在它们被明确定义了,并且遵循一致的接口。这次整合允许我们将所有条件作为数组传递。条件数组只不过是组合的条件,可以用一个简单的组合器将它们放到一起,这样看起来更加明晰。值得注意的是,免费云主机、域名“and” 组合器是通用的,可以复用并且还可能拓展为库。提起结果现在,averageSalary 函数已健壮得多了。我们可以加入新条件,无需破坏函数接口或改变函数实现。数据转换过程管道化函数式编程的另外一个很有用的实践是将所有数据转换过程变成管道。在本例中,就是将 filter 过程提取到循环外面。这样一来计数的 count 就没什么用了。接下来,如在叠加之前将 salary 摘取出来,求和过程就变成简单的 reduce 了。提取通用函数接着我们发现,***两行代码和当前域完全没什么关系。其中不包含任何与员工、部门相关的信息。仅仅只是一个计算平均数的函数。所以也将其提取出来。又一次,提取出的函数是完全通用的。将所有 salary 部分提出来之后,我们得到解决方案。对比原始方案和***方案,我敢说,毫无疑问,后者更棒。首先,它更通用(我们可以不破坏函数接口的情况下添加新类型的判断条件)。其次,我们从可变状态(mutable state)和 if 语句中解脱出来,这使代码更容易阅读、理解。何时收手函数式风格的编程中,我们会编写许多小型函数,它们接收一个集合,返回新的集合。这些函数能够以不同方式组合、复用 —— 棒极了。不过,这种风格的一个缺点是代码可能会变得过度抽象,导致难以读懂,那些函数组合在一起到底要干嘛?我喜欢使用乐高来类比:乐高积木能够以不同形式放在一起 ; 它们是可组合的。但注意,并不是所有积木都是一小块。所以,在使用本文所述技巧进行代码重构时,千万别妄图将一切都变成接收数组、返回数组的函数。诚然,这样一些函数组合使用极度容易,可它们也会显著降低我们对程序的理解能力。这里展示了如何使用函数式思维重构 TypeScript 代码。我所遵循的是以下几点规则:尽可能使用函数代替简单值数据转换过程管道化提取通用函数以上就是如何使用函数式TypeScript代码,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注云技术行业资讯频道。

相关推荐: CSS中布局模型是什么

这篇文章给大家分享的是有关CSS中布局模型是什么的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。CSS 包含 3 种基本的布局模型,用英文概括为:Flow、Layer 和 Float。 在网页中,元素有三种布局模型:流动模型(Flow…

文章页内容下
赞(0) 打赏
版权声明:本站采用知识共享、学习交流,不允许用于商业用途;文章由发布者自行承担一切责任,与本站无关。
文章页正文下
文章页评论上

云服务器、web空间可免费试用

宝塔面板主机、支持php,mysql等,SSL部署;安全高速企业专供99.999%稳定,另有高防主机、不限制内容等类型,具体可咨询QQ:360163164,Tel同微信:18905205712

主机选购导航云服务器试用

登录

找回密码

注册