export type Entries<T> = {
  [K in keyof T]: [K, T[K]];
}[keyof T][];
const test = (template: ITemplate2) => {
  (Object.entries(template) as Entries<ITemplate2>).map(([key, value]) => {
    return [key, value];
  });
};
const platforms = {
  WINDOWS: 'Win',
  MAC: 'Mac',
  IOS: 'IPhone|iPad|iPod',
  ANDROID: 'Android',
  LINUX: 'Linux',
} as const;

// 해당 객체의 타입이 그냥 만들어진다.
type What = typeof platforms;
// 해당 객체의 키값이 유니온 타입으로 만들어진다.
type GOKEY = keyof typeof platforms;

Untitled

Untitled

const platforms = {
  WINDOWS: 'Win',
  MAC: 'Mac',
  IOS: 'IPhone|iPad|iPod',
  ANDROID: 'Android',
  LINUX: 'Linux',
}

// 해당 객체의 타입이 그냥 만들어진다.
type What = typeof platforms;
// value가 string이건 아니건 상관없이 "키 값"이 유니언타입으로 나온다.
type GOKEY = keyof typeof platforms;

Untitled

Untitled