Neolithic Prancing Minotaurs

    dts-element-fp
    TypeScript icon, indicating that this package has built-in type declarations

    1.2.0 • Public • Published

    dts-element-fp

    npm build coverage

    typescript definition generator for functional programming

    Changelog - Examples - Documentation

    Install

    # using npm 
    npm install --save-dev dts-element-fp dts-element
     
    # using yarn 
    yarn add --dev dts-element-fp dts-element

    Usage

    import * as dts from 'dts-element';
    import * as dts_fp from 'dts-element-fp';
     
    const curried_interfaces = dts_fp.create_curried_interfaces(3);
     
    dts.emit(curried_interfaces); /*=>
      interface CurriedFunction1<T1, R> {
          (v1: T1): R;
      }
      interface CurriedFunction2<T1, T2, R> {
          (v1: T1): CurriedFunction1<T2, R>;
          (v1: T1, v2: T2): R;
      }
      interface CurriedFunction3<T1, T2, T3, R> {
          (v1: T1): CurriedFunction2<T2, T3, R>;
          (v1: T1, v2: T2): CurriedFunction1<T3, R>;
          (v1: T1, v2: T2, v3: T3): R;
      }
    */
     
    const curried_declarations_normal = dts_fp.create_curried_declarations(
      'append',
      dts.parse_type('<T, U>(value: T, list: List<U>) => (T | U)[]'),
    );
     
    dts.emit(curried_declarations_normal); /*=>
      declare const append: append_00;
      type append_00 = {
          <T>(value: T): append_10<T>;
          <T, U>(value: T, list: List<U>): append_11<T, U>;
      };
      type append_10<T> = {
          <U>(list: List<U>): append_11<T, U>;
      };
      type append_11<T, U> = (T | U)[];
    */
     
    const curried_declarations_various = dts_fp.create_curried_declarations(
      'map',
      {
        list: dts.parse_type('<T, U>(fn: (x: T) => U, list: List<T>) => U[]'),
        functor: dts.parse_type('<T, U>(fn: (x: T) => U, functor: Functor<T>) => Functor<U>'),
      },
    );
     
    dts.emit(curried_declarations_various); /*=>
      declare const map: map_00;
      type map_00 = {
          <T, U>(fn: (x: T) => U): map_10<T, U>;
          <T, U>(fn: (x: T) => U, list: List<T>): map_list_11<U>;
          <T, U>(fn: (x: T) => U, functor: Functor<T>): map_functor_11<U>;
      };
      type map_10<T, U> = {
          (list: List<T>): map_list_11<U>;
          (functor: Functor<T>): map_functor_11<U>;
      };
      type map_list_11<U> = U[];
      type map_functor_11<U> = Functor<U>;
    */

    See Documentation for more options.

    Development

    # lint 
    yarn run lint
     
    # build 
    yarn run build
     
    # test 
    yarn run test

    Related

    • dts-element - A DOM library for generation TypeScript declaration (.d.ts) files

    License

    MIT © Ika

    Install

    npm i dts-element-fp

    DownloadsWeekly Downloads

    43

    Version

    1.2.0

    License

    MIT

    Unpacked Size

    50.8 kB

    Total Files

    36

    Last publish

    Collaborators

    • ikatyang