Nobody Prefers Margarine

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

    0.13.0 • Public • Published

    Simple functional programming utility & programming helper tools

    Download Status Github Star Github Issues NPM version License

    Simple utility functions that can use browser, node.

    Function list


    name description
    isFalse If argument false, return true
    isTrue If argument true, return true
    invert return inverted boolean value


    name description
    populate populate array zero base, if you pass second argument true that populate one base
    chunk array split given size
    last pick last element from array
    first pick first element from array
    toArray make array given argument


    name description
    isUndefined if argument undefiend, return true
    isNotUndefined if argument not undefined, return true
    isNull if argument null, return true
    isNotNull if argument not null, return true
    isNotEmpty if argument not null and undefined, return true
    isEmpty if argument null or undefined, return true
    isComplexEmpty if argument not undefined and null, do additional test isNaN, empty string, empty array, empty object
    isNotComplexEmpty return inverted value isComplexEmpty


    name description
    typedkey same work Object.keys, but typed key in Recoed
    getRandomRange return random value in min and max
    getRandomRangeInt return random integer value in min and max
    isError if argument is Error return Error or return undefined


    name description
    sleep sleep given millisecond

    Custom Utility Types

    name description
    TResolvePromise get type resolved promise
    TResolveArray get type resolve array
    TNullablePick convert specific field to nullable
    TNonNullableObject object type each field to non nullable
    TNonNullablePick convert specific field to non nullable

    False & True checker

    Why need this utility?

    import { isFalse } from 'my-easy-fp'
    const iamboolean = false;
    // this line easily miss in refactoring or changing
    if (!iamboolean) {
      console.log('I am execute false-case');
    // more than better!
    if (isFalse(iamboolean)) {
      console.log('I am execute false-case');

    Empty checker

    Why need this utility?

    const iamempty: null | undefined = undefined;
    // this line some boring task
    if (iamempty === undefined || iamempty === null) {
      console.log('i am empty');
    // more than better!
    if (isEmpty(iamempty)) {
      console.log('i am empty');


    Why need this utility?

    const ms = 1000;
    // this line some boring task
    await new Promise((resolve) => setTimeout(() => resolve(), ms));
    // more than better!
    await sleep(ms);


    populate, chunk utility here.

    // seq is [0,1,2,3,4,5,6,7,8,9]
    const seq = populate(10);
    // seq is [1,2,3,4,5,6,7,8,9,10]
    const seq = populate(10, true);
    // chunked is [[1,2],[3,4],[5,6],[7]]
    const chunked = chunk([1,2,3,4,5,6,7], 2);

    Type Helper

    resolve promise, array. and some interface or class field change nullable.

    // you can get string | Buffer type
    type TResolvedPromiseType = TResolvePromise<ReturnType<typeof fs.promises.readFile>>
    // you can get number type
    type TResolvedArrayType = TResolveArray<number[]>
    interface IStudent {
      name: string;
      major: string;
      grade: number;
    // you can get { name?: string; major?: string; grade: number; }
    // converted Omit<IStudent, 'name' | 'major'> & Pick<Partial<IStudent>, 'name' | 'major'>
    type TCliArgumentStudent = TNullablePick<IStudent, 'name' | 'major'>;




    npm i my-easy-fp

    DownloadsWeekly Downloads






    Unpacked Size

    14 kB

    Total Files


    Last publish


    • jooni