Функциональный TypeScript

functional typescript

При обсуждении функционального программирования, мы часто говорим о механизме и не говорим об основных принципах. Функциональное программирование это не монады, моноиды и производные от типов, даже если их полезно знать. В основном это написание программ в стиле обобщенных и повторно используемых функций. В этой статье мы рассмотрим применение функционального мышления при рефакторинге кода на языке TypeScript.

И сделаем мы это, следуя следующим трем пунктам:

  • Используем простые функции вместо простых значений
  • Моделируем изменение данных как конвейер
  • Извлечем обобщенные функции

Итак, начнем-с!…

Функтор в JavaScript

Рассмотрим следующий код:

function plus1(value) {  
    return value + 1  
}  

Это простая функция, которая получает числовое значение и добавляет к нему единицу. Аналогичным образом мы можем сделать функцию plus2. Мы будем позже использовать эти функции:

function plus2(value) {  
    return value + 2  
}  

Или мы можем написать обобщенную функцию, чтоб использовать любую из этих функций по необходимости:

function F(value, fn) {  
    return fn(value)  
}
F(1, plus1) ==>> 2

Эта функция будет работать хорошо, пока будем ей передавать целочисленное значение.…