@@ -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