Тип производного от объекта JS - PullRequest
0 голосов
/ 26 мая 2018

У меня есть этот объект:

export interface ClientOpts {
  key: string,
  listener: Function,
  host: string,
  port: number
  unlockRequestTimeout: number;
  lockRequestTimeout: number;
  unlockRetryMax: number;
  lockRetryMax: number;
  ttl: number
}

Мне интересно, есть ли способ получить вышеперечисленное из объекта, например, так:

export const validConstructorOptions = {
  key: 'string',
  listener: 'Function',
  host: 'string',
  port: 'number',
  unlockRequestTimeout: 'number',
  lockRequestTimeout: 'number',
  unlockRetryMax: 'number',
  lockRetryMax: 'number'
};

один способ сделать это,вместо этого будет что-то вроде этого:

   export const validConstructorOptions = {
      key: 'string',
      listener: ()=>{},
      host: 'string',
      port: 999,
      unlockRequestTimeout: 999,
      lockRequestTimeout: 999,
      unlockRetryMax: 999,
      lockRetryMax: 999
    };

, а затем выполните

export type ClientOpts = typeof validConstructorOptions;

, но мне интересно, есть ли способ сделать это, используя только строки в объекте.

1 Ответ

0 голосов
/ 26 мая 2018

но мне интересно, есть ли способ сделать это, используя только строки в объекте.

Нет, нет.

Существует открытое обсуждение по связанной теме: как получить метаданные, которые можно использовать во время выполнения, из типа TypeScript.Но пока команда TS не хочет ничего реализовывать для этого.

...