typescript - Lodash-ordlista ersättning i ES6


Vi har använt lodash i ett gammalt TypeScript-projekt. Nu migrerar vi till ES6-moduler och byter därför ut lodash mot lodash-es. I lodash finns en Dictionary-typ deklarerad här: https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/types/lodash/common/common.d.ts#L247-L249

interface Dictionary<T> {
    [index: string]: T;
}

Vi använde det för att deklarera några fält så här:

labTransGrouped: Dictionary<Array<ILabtransItem>>;

Det finns ingen uppenbar ersättning i lodash-es. Jag antar att jag bör använda något som TypeScript Map istället. Men vad är rätt sätt att använda det i typdeklarationen i mitt fall? Jag kunde inte hitta något omnämnande av det i lodashs ändringslogg eller migrationsguider, så det måste vara något enkelt.

Svar #1

Jag ställdes inför samma problem.

lodash-es har definitivt inte Dictionary-typen, men Dictionary är en så enkel typ att du inte ens behöver skapa den själv.

Kopiera helt enkelt Dictionary-typen någonstans i din kod och importera.

export interface Dictionary<T> {
  [index: string]: T;
}

Svar #2

lodash-es använder definitioner från lodash och även Dictionary.

import _ from 'lodash-es';
import { Dictionary } from 'lodash';

interface ILabtransItem {
    a: string;
}

const arr: Dictionary<Array<ILabtransItem>> = {}
const groupedArr = _.groupBy(arr, x => x[0].a)

Prova det här
Se definitionen av groupBy för lodash-es här

Relaterade artiklar