So I have a timezone list and has a type of the following:
type TimezoneListType = {
   label: string;
   name: string;
   offset: number;
   lower?: string;
   offsetString?: string;
 };
const TIMEZONE_LIST: TimezoneListType[] = [
  {
    label: 'Niue',
    name: 'Pacific/Niue',
    offset: -11,
  },
  {
    label: 'Pago Pago',
    name: 'Pacific/Pago_Pago',
    offset: -11,
  },
  //... and so on
];
const TIMEZONE_NAME_MAP: any = {};
const TIMEZONE_MAP = TIMEZONE_LIST.map((item) => {
  const positive = item.offset >= 0;
  const hour = item.offset | 0;
  const minute = (item.offset - hour) * 60;
  return TIMEZONE_NAME_MAP[item.name] = {  // typescript is screaming in this line. if try to change the `any` to `TimezoneListType`
    ...item,
    lower: item.label.toLowerCase(),
    offsetString: 'something',
  };
});
on the lower end of the code you'll see that I'm transforming timezone list to have keys of item.name then adding some property lower and offsetString.
My problem is item.name is giving me:
Element implicitly has an 'any' type because index expression is not of type number ts(7015)
on both item and name when I hover at them. And I'm not sure how to type it correctly.
EDIT: Ideal result of the transformation is the photo below: 
I've just put any on the map argument like TIMEZONE_LIST.map((item: any)
Update: I've changed my object declaration type to 
const TIMEZONE_NAME_MAP: Record<string, TimezoneListType> = {}; 
seems to work but I don't understand why? and Now the other part of my program is screaming as I've exported it to other places so I can use it like TIMEZONE_NAME_MAP.filter( ..so on) but does't recognize indexOf as I'm trying to use that inside the filter function. what do i do?
 
     
     
    