首页 > 解决方案 > 形状不定的物体

问题描述

在我的代码库中,我有几个处理 API 调用的导出方法。这些方法中的每一个都采用一个param始终是对象但形状不确定的参数,例如

export {
  getSomething: (param: any) => getSomething(param),
  ...
}

param可能是这样的:

 { userId: "123" } || { userId: "123", otherId: "234", ... } etc.

这是getSomething定义:

function getSomething(param: { userId: string; }) {
  ...
}

目前我找到的唯一解决方案(我不满意)可能是这样的:

  interface Param {
    [key: string]: string;
  }

  export {
    getSomething: (param: Param) => getSomething(param),
    ...
  }

  // in another file
  function getSomething(param: Param) {}

但是我失去了对我的函数期望作为参数的描述

我怎么能在这里摆脱类型any并指定它param是一个形状不确定且键数可变的对象?

非常感谢你的帮助

标签: javascripttypescript

解决方案


我确实认为您的解决方案是正确的。使用界面隔离是一个 SOLID 原则。

此外,您的方法getSomething只需要使用keyparam 的所有其他属性是不需要的。

我确实认为这是清洁代码和 SOLID 的正确方法。


推荐阅读