gzuidhof/tygo

Use Record or mapped types for map

Opened this issue · 1 comments

I'd like to be able to generate either a Record or a typescript mapped type for a golang map type.

Example:

CheapestReturnMiles map[util.CabinClassT]util.MilesTax `json:"CheapestReturnMiles"`

Config:

type_mappings:
  util.CabinClassT: 'CabinClass'
  util.MilesTax: '{miles: number, tax: number}'

Current output:

CheapestReturnMiles: { [key: CabinClass]: {miles: number, tax: number}};

Expected output:

CheapestReturnMiles: Record<CabinClass, { miles: number; tax: number }>;

The current output fails typescript compliation, since we have CabinClass defined as type CabinClass = 'Economy' | 'First', and typescript doesnt allow literal types as index signatures.

Alternatively a mapped type could be used here:

CheapestReturnMiles: { [key in CabinClass]: { miles: number; tax: number } };

Also to be clear, happy to take a stab at implementing this if you have pointers or know why this is hard to do