You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

开启TS严格模式后索引类型报错,求函数类型优化方案

问题解决:TypeScript严格模式下参数类型报错修复

问题核心是你把函数参数类型设为object,严格模式下TypeScript不允许直接用字符串索引访问这类宽泛类型的属性(比如params['_isRegExp']),因为object类型没有定义任何已知属性。

以下是符合TypeScript严格类型要求的修改版本:

/** Returns a string of parameters ready to be appended to a GET request */
export function objectParameterize(params: {
  _isRegExp?: boolean;
  [key: string]: string | number | boolean;
}): string {
  let parameters = '';
  const isRegExp: boolean = params._isRegExp === true;
  for (const key in params) {
    if (key && key !== '_isRegExp') {
      if (parameters !== '') {
        parameters = `${parameters}&`;
      }
      const value = params[key];
      if (isRegExp) {
        parameters = `${parameters}${key}=${value}`;
      } else {
        parameters = `${parameters}${key}=${encodeURIComponent(String(value))}`;
      }
    }
  }
  return parameters ? `?${parameters}` : '';
}

关键修改说明:

  • 精确参数类型:替换宽泛的object为包含可选_isRegExp属性和字符串索引签名的类型,明确允许的参数结构,让TypeScript能正确推断属性类型。
  • 返回类型修正:把any改成string,函数明确返回字符串,类型更安全且符合实际逻辑。
  • 简化判断逻辑:直接用params._isRegExp === true判断,属性不存在时表达式自动为false,和原逻辑一致但更简洁。
  • 值类型兼容处理:用String(value)确保所有参数值都能转为字符串,避免encodeURIComponent接收非字符串类型的警告。

内容的提问来源于stack exchange,提问作者Scott B

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 07:04:59