typescript 怎么写object的声明文件?

假如对象是:

{
    key0: val0,
    key1: val1,
    ...
}

就是说,我不知道键值对的名称,类型是string

说白了,这是url参数
比如:

https://www.aaa.com?a=1&b=2&c=3

应该怎么写类型?

interface UrlParam {
  // 这里不知道怎么写
}
interface OptionObj {
  method?: string,
  url?: string,
  params?: UrlParam
}

function joinParam(domain: string, params: UrlParam = null): string {
  if (!domain) return "";
  let url: string = domain;
  if (params && typeof params === 'object') {
    let isFirst = true;
    for (const key in params) {
      url += isFirst ? '?' : '&';
      url += `${key}=${params[key]}`;
      isFirst = false;
    }
  }
  return url;
}

我觉得我不适合玩Typescript,但无奈接手的项目是Typescript的,求各位大神提示一下
谢谢

阅读 3k
1 个回答

万能的方法就是AnyScript,当然可能会被打

你可以这样

type UrlParam =  {
  [key: string]: string | number ;
}

也可以用Utility Types提供的快捷方式

type UrlParam = Record<string, string|number>;

另外,这样大力出奇迹的直接拼出来URL是有问题的,例如有个参数的值本身带有&=?怎么办

可以用URLSearchParams进行处理,也可以看看成熟的库它们是怎么处理的,比如axios

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进