Skip to content

Commit 86aeee8

Browse files
Charts: type the items and the result of the viz map() by its array
1 parent 3627c97 commit 86aeee8

1 file changed

Lines changed: 17 additions & 7 deletions

File tree

  • packages/devextreme/js/__internal/viz/core

‎packages/devextreme/js/__internal/viz/core/utils.ts‎

Lines changed: 17 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -159,15 +159,26 @@ export const getPower = function (value) {
159159
return value.toExponential().split('e')[1];
160160
};
161161

162-
export function map(array, callback) {
162+
type IsAny<T> = 0 extends 1 & T ? true : false;
163+
164+
// eslint-disable-next-line @typescript-eslint/no-explicit-any -- an untyped array gives untyped items
165+
type Item<TArray> = IsAny<TArray> extends true ? any
166+
: TArray extends ArrayLike<infer TItem> ? TItem : never;
167+
168+
export function map<TArray extends ArrayLike<unknown>, TResult>(
169+
array: TArray,
170+
callback: (item: Item<TArray>, index: number) => TResult | null,
171+
): TResult[];
172+
export function map<TResult>(
173+
array: ArrayLike<unknown>,
174+
callback: (item: unknown, index: number) => TResult | null,
175+
): TResult[] {
163176
let i = 0;
164177
const len = array.length;
165-
// eslint-disable-next-line @typescript-eslint/no-explicit-any -- the items of the series are not typed
166-
const result: any[] = [];
167-
let value;
178+
const result: TResult[] = [];
168179

169180
while (i < len) {
170-
value = callback(array[i], i);
181+
const value = callback(array[i], i);
171182
if (value !== null) {
172183
result.push(value);
173184
}
@@ -319,7 +330,7 @@ export const processSeriesTemplate = function (seriesTemplate, items) {
319330
const customizeSeries = isFunction(seriesTemplate.customizeSeries) ? seriesTemplate.customizeSeries : noop;
320331
const { nameField } = seriesTemplate;
321332
const generatedSeries = {};
322-
const seriesOrder = [];
333+
const seriesOrder: PropertyKey[] = [];
323334
let series;
324335
let i = 0;
325336
let length;
@@ -332,7 +343,6 @@ export const processSeriesTemplate = function (seriesTemplate, items) {
332343
series = generatedSeries[data[nameField]];
333344
if (!series) {
334345
series = generatedSeries[data[nameField]] = { name: data[nameField], nameFieldValue: data[nameField] };
335-
// @ts-expect-error
336346
seriesOrder.push(series.name);
337347
}
338348
}

0 commit comments

Comments
 (0)