如何键入任意对象或其任何键作为方法参数

时间:2019-10-06 14:07:09

标签: typescript

我一直在尝试尝试键入递归序列化任意对象的输入法。我使用了映射类型,通用参数,递归类型(例如JSON类型),但没有任何运气):

这是我试图摆脱参数中的any的方法:

export function serialize(data: any) {
  if (data === null) {
    return '';
  }

  if (typeof data === 'object') {
    let serializedData = '';
    for (const k of Object.keys(data).sort()) {
      serializedData += k;
      if (data[k] !== null) {
        serializedData += serialize(data[k]);
      }
    }
    return serializedData;
  }

  return data.toString();
}

1 个答案:

答案 0 :(得分:1)

您需要一个自定义类型保护,以将值优化为visit_datetime | client | script | date_regen | 2019/10/06 03:32:50 | 3 | script3 | 2019-03-18 14:08:02 |

Record<string, unknown>