Logo
☆☆☆☆☆
0.0
Intermediate
30h

使用 fp-ts 进行 TypeScript 中的函数式编程

函数式编程是一种强调不可变性和纯函数的编程范式。它不仅让代码更易于理解、测试和并行处理,还能提升性能。TypeScript 是一种静态类型、面向对象的编程语言,建立在 JavaScript 之上。尽管 TypeScript 不是纯粹的函数式编程语言,但同样可以用来编写函数式代码。 本课程适合几乎没有 TypeScript 和函数式编程基础的初学者。你将从学习基础知识开始,逐步完成多个复杂度递增的项目。你还将了解 fp-ts 这个库,它提供多种函数式编程的构造工具。课程涵盖 fp-ts 的核心功能,以及一些重要的单子(monads),如 Option、Either 和 TaskEither。 完成本课程后,你将掌握如何在新的或现有的 TypeScript 项目中应用函数式编程技巧和 fp-ts,迈向成为这两方面专家的道路!

12 Lessons
Included in Subscription Plan
Personalized Learning
Powered by AI
使用 fp-ts 进行 TypeScript 中的函数式编程
函数式编程是一种强调不可变性和纯函数的编程范式。它不仅让代码更易于理解、测试和并行处理,还能提升性能。TypeScript 是一种静态类型、面向对象的编程语言,建立在 JavaScript 之上。尽管 TypeScript 不是纯粹的函数式编程语言,但同样可以用来编写函数式代码。 本课程适合几乎没...

WHAT YOU'LL LEARN

熟悉函数式编程的概念

Content

12 Lessons • 0 Quizzes • 0 Challenges

函数式编程入门
  1. 1

    在深入之前

  2. 2

    为什么选择函数式编程?

  3. 3

    为什么选择 JavaScript?

  4. 4

    为什么使用 TypeScript?

  5. 5

    使用 TypeScript 的函数式编程

  6. 6

    编程挑战:使用更优的类型重写函数

  7. 7

    解决方案回顾:使用更优类型重写函数

  8. 8

    类型测验

小贴士:一些有用的 JavaScript 和 TypeScript
  1. 1

    设置 TypeScript

  2. 2

    在 JavaScript 中创建函数

  3. 3

    使用反引号实现便捷打印

  4. 4

    三元运算符

  5. 5

    区分联合类型

  6. 6

    摘要:JavaScript 和 TypeScript 小技巧

  7. 7

    编程挑战:创建代数数据类型

  8. 8

    解决方案回顾:创建代数数据类型

  9. 9

    编程挑战:将代码重写为表达式

  10. 10

    解决方案回顾:将代码重写为表达式

  11. 11

    测验:JavaScript 和 TypeScript 的小知识

再战一次:我们的最终应用
  1. 1

    设置最终应用程序的环境

  2. 2

    编写我们的第一个创建 Lambda 函数代码

  3. 3

    创建 Lambda 的核心逻辑

  4. 4

    整合在一起

  5. 5

    创建 Retrieve Lambda 函数

  6. 6

    DynamoDB

  7. 7

    添加真实数据库

  8. 8

    总结:最终应用程序

  9. 9

    编程挑战:在函数中使用序列

  10. 10

    解决方案回顾:在函数中使用序列

  11. 11

    测验:测试

函数式编程入门
  1. 1

    函数式编程入门

  2. 2

    编写函数式代码

  3. 3

    编写函数式程序

  4. 4

    柯里化

  5. 5

    组合柯里化

  6. 6

    柯里化与组合的问题

  7. 7

    单子

  8. 8

    单子的优势

  9. 9

    类型简介

  10. 10

    概要:函数式编程入门

  11. 11

    编程挑战:高阶函数

  12. 12

    解决方案回顾:高阶函数

  13. 13

    编程挑战:在函数中使用 Option

  14. 14

    解决方案回顾:在函数中使用 Option

  15. 15

    测验:函数式编程入门

扩展我们的预订应用程序
  1. 1

    使用 Reader Monad 收集配置

  2. 2

    使用状态

  3. 3

    更好的错误类型

  4. 4

    餐厅和序列

  5. 5

    选择配置

  6. 6

    探索更多想法

  7. 7

    摘要:扩展我们的预订应用程序

  8. 8

    编程挑战:在函数中使用 Reader Monad

  9. 9

    解决方案回顾:在函数中使用 Reader Monad

  10. 10

    关于预订应用程序的自测题

我们的第一个项目:用户注册
  1. 1

    定义我们的类型

  2. 2

    使用 Either 进行验证

  3. 3

    在继续之前:使用“Either or”验证?

  4. 4

    使用提升方式创建用户(concept)

  5. 5

    整合在一起

  6. 6

    应对不断变化的业务需求

  7. 7

    摘要:用户注册项目

  8. 8

    编程挑战:添加检查

  9. 9

    解决方案回顾:添加检查

  10. 10

    编程挑战:使用 Either 和 Pipe

  11. 11

    解决方案回顾:使用 Either 和 Pipe

  12. 12

    测验:用户注册项目

重写应用程序
  1. 1

    原始应用程序

  2. 2

    评估

  3. 3

    改进概述

  4. 4

    我们的新代码设置

  5. 5

    验证

  6. 6

    处理异步调用

  7. 7

    我们函数式方法的优势

  8. 8

    摘要:重写应用程序

  9. 9

    编程挑战:使用 Switch 编写函数

  10. 10

    解决方案回顾:使用 Switch 编写函数

  11. 11

    自我测验:应用理解

部署监控应用程序
  1. 1

    AWS Lambda 和 SAM

  2. 2

    设置我们的项目

  3. 3

    使用 CloudWatch SDK

  4. 4

    用于异步行为的单子

  5. 5

    转换我们的数据

  6. 6

    同步行为与IO

  7. 7

    综合总结

  8. 8

    扩展

  9. 9

    一个小插曲:记忆化

  10. 10

    摘要:部署监控应用程序

  11. 11

    编程挑战:处理流程

  12. 12

    解决方案回顾:处理流程

  13. 13

    编程挑战:使用 TaskEither

  14. 14

    解决方案回顾:使用 TaskEither

  15. 15

    测验:部署监控应用程序

高级函数式编程技术
  1. 1

    领域特定语言

  2. 2

    无标签最终(Tagless Final)

  3. 3

    自由幺半群

  4. 4

    可执行与声明式编码及代数设计

  5. 5

    摘要:高级函数式编程技巧

  6. 6

    编程挑战:创建一个小型领域特定语言(DSL)

  7. 7

    解决方案回顾:创建一个小型领域特定语言(DSL)

  8. 8

    自我测验:高级函数式编程技巧

测试
  1. 1

    测试的类型

  2. 2

    测试驱动开发

  3. 3

    函数式编程与测试

  4. 4

    基于属性的测试

  5. 5

    摘要:测试

  6. 6

    编程挑战:编写一个参数化测试

  7. 7

    解决方案回顾:编写参数化测试

  8. 8

    测验:测试

结论
  1. 1

    结语

附录
  1. 1

    其他概念

Certificate of Completion

Showcase your accomplishment by sharing your certificate of completion.

Course Author:Anonymous User

Reviews

Read reviews from students who have taken this course and share your own experience.

Reviews & Comments (0)