从JS对象派生类型

时间:2018-05-26 03:21:01

标签: typescript typescript-typings typescript2.0 tsc

我有这个对象:

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 :(得分:1)

  

但我想知道是否有某种方法只使用对象中的字符串来做到这一点。

不,没有。

相关主题有an open discussion:如何从TypeScript类型获取可在运行时使用的元数据。但到目前为止,TS团队并不想为此实施任何目标。