UNPKG

@data-client/normalizr

Version:

Normalizes and denormalizes JSON according to schema for Redux and Flux applications

25 lines (21 loc) 607 B
import type { Schema } from '../interface.js'; import type { AbstractInstanceType } from '../types.js'; export interface IndexInterface<S extends Schema = Schema, P = object> { key(params?: P): string; readonly schema: S; } export type ArrayElement<ArrayType extends unknown[] | readonly unknown[]> = ArrayType[number]; export type IndexParams<S extends Schema> = S extends ( { indexes: readonly string[]; } ) ? { [K in Extract< ArrayElement<S['indexes']>, keyof AbstractInstanceType<S> >]?: AbstractInstanceType<S>[K]; } : Readonly<object>;