TypeScript Objects as Dictionary types as in C#

前端 未结 6 742
春和景丽
春和景丽 2020-11-27 09:39

I have some JavaScript code that uses objects as dictionaries; for example a \'person\' object will hold a some personal details keyed off the email address.



        
6条回答
  •  遥遥无期
    2020-11-27 09:55

    You can use Record for this:

    https://www.typescriptlang.org/docs/handbook/utility-types.html#recordkt

    Example (A mapping between AppointmentStatus enum and some meta data):

      const iconMapping: Record = {
        [AppointmentStatus.Failed]: { Name: 'calendar times', Color: 'red' },
        [AppointmentStatus.Canceled]: { Name: 'calendar times outline', Color: 'red' },
        [AppointmentStatus.Confirmed]: { Name: 'calendar check outline', Color: 'green' },
        [AppointmentStatus.Requested]: { Name: 'calendar alternate outline', Color: 'orange' },
        [AppointmentStatus.None]: { Name: 'calendar outline', Color: 'blue' }
      }
    

    Now with interface as value:

    interface Icon { Name: string Color: string }

    Usage:

    const icon: SemanticIcon = iconMapping[appointment.Status]

提交回复
热议问题