Skip to content

jesgarciamartinez/fpjstsnode

Repository files navigation

Functional programming with Typescript

What properties do we want our software to have?

  • Correctness: The software does what it's supposed to do, i.e., reflects its design
  • Flexibility: The software is easy to modify as the design (requirements) change

Why functional programming

  • Make design explicit with types
  • Compositionality

We can think of our software as derived from a design. There's several ways to check if our code matches our design, ordered in the image depending on how close they are to the design or code levels.

See 3 levels of software

design

Course contents

  1. Explicit design with types
  2. Compositionality
  3. Brief history of JS and TS
  4. Basic JS and TS types
  5. Functions
  6. Immutability
  7. Implementing map, filter, reduce
  8. Currying
  9. Compose
  10. Pipe and flow examples
  11. Combinators
  12. Exercises
  13. Recursion
  14. TS type system: structural vs nominal, soundness vs completeness, variance
  15. Sum and product types
  16. Nominal types and smart constructors
  17. Advanced TS types
  18. Contracts
  19. Property-based testing
  20. ADTs - Maybe

About

Functional programming + TS workshop

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published