Парадигмы программирования

Procedural

    let string = 'hello';
    string += ', ';
    string += 'world';
  

Object-Oriented


    class StringBuilder {
      constructor(initialString = '') {
        this.value = initialString;
      }

      append(string) {
        this.value += string;
      }
    }

    const string = new StringBuilder('hello');
    string.append(', ');
    string.append('world');
  

Chaining

    class StringBuilder {
      constructor(initialString = '') {
        this.value = initialString;
      }

      append(string) {
        this.value += string;
        return this;
      }
    }

    const string = new StringBuilder('hello');
    string
      .append(', ')
      .append('world');
  

Functional (Imperative)

    const append = (string1, string2) => string1 + string2;
    let string = 'hello';
    string = append(string, ', ');
    string = append(string, 'world');
  

built-in functions

    const append = (string1, string2) => string1 + string2;
    let string = 'hello';
    string = string.concat(', ');
    string = string.concat('world');
  

lodash

    const { join, concat } = _;
    let string = 'hello';
    string = join(concat(string, ', '), '');
    string = join(concat(string, 'world'), '');
  

Functional (Declarative). Ramda

    const { concat } = R;
    const append = pipe(concat, join);
    let string = 'hello';
    string = concat(string, ', ');
    string = concat(string, 'world');
  

Reactive. RxJS

rxjs.operators

rxjs.examples

ObservableHQ