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
