How to enable Object.groupBy() in TypeScript and Node.js – Node.js

by
Liam Thompson
javascript node.js react-typescript

Quick Fix: Install the latest version of TypeScript and Node.js, or use a workaround by adding extension interfaces to your project.

The Problem:

In TypeScript and Node.js, the Object.groupBy() method is not yet supported natively. Developers who wish to use this method face a TypeScript error indicating that the property ‘groupBy’ does not exist on the ‘ObjectConstructor’ type. The goal is to find a solution to enable Object.groupBy() and utilize it in the code.

The Solutions:

Solution 1: Use a workaround with extension interfaces

To enable Object.groupBy() in TypeScript before it’s officially merged, you can use a workaround by adding the following extension interfaces to your project in a file named groupBy.d.ts:

/// {projectSrcRoot}/groupBy.d.ts

interface ObjectConstructor {
    /**
     * Groups members of an iterable according to the return value of the passed callback.
     * @param items An iterable.
     * @param keySelector A callback which will be invoked for each item in items.
     */
    groupBy<K extends PropertyKey, T>(
        items: Iterable<T>,
        keySelector: (item: T, index: number) => K,
    ): Partial<Record<K, T[]>>;
}

interface MapConstructor {
    /**
     * Groups members of an iterable according to the return value of the passed callback.
     * @param items An iterable.
     * @param keySelector A callback which will be invoked for each item in items.
     */
    groupBy<K, T>(
        items: Iterable<T>,
        keySelector: (item: T, index: number) => K,
    ): Map<K, T[]>;
}

const basic = Object.groupBy([0, 2, 8], x => x < 5 ? 'small' : 'large');

With this workaround, you can use Object.groupBy() in your code.

Q&A

Can I use Object.groupBy() in Node.js v18.17.1 & TypeScript v5?

Unfortunately not yet, the PR to enable it is in state Open.

What is the workaround to use Object.groupBy() in Node.js v18.17.1 and Typescript v5 now?

Add a declaration file groupBy.d.ts in your project.

What is the usage of groupBy.d.ts?

Add the groupBy.d.ts file’s content in your project to enable Object.groupBy().

Video Explanation:

The following video, titled "How to Setup TypeScript in Node js and Express Server - YouTube", provides additional insights and in-depth exploration related to the topics discussed in this post.

Play video

5.4M views · 8:38 · Go to channel · Understanding the Object.groupBy() in JavaScript. The Brave Coders•224 views · 1:47:11 · Go to channel ...