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

TypeScript报错:'String'类型参数无法适配XMLHttpRequest.send()参数

TypeScript类型错误:String类型无法传递给XMLHttpRequest.send()参数

问题代码

const setParams =(d_:any)=>{
        let p:String = ''
        for(let k in d_) p += k + '=' + d_[k] + '&'
        return p
}

const o = {data: {}} 
x.send(setParams(o.data))

报错信息

const setParams: (d_: any) => String
参数类型“String”无法赋值给类型“Document | XMLHttpRequestBodyInit | null | undefined”。
类型“String”缺少类型“URLSearchParams”中的以下属性:append、delete、get、getAll及其他7个属性


问题原因

  1. 误用了String包装对象类型而非TS原生的string原始类型,XMLHttpRequest.send()不接受String对象作为参数;
  2. 手动拼接的参数字符串末尾会多出&,可能引发请求格式问题。

修复方案

方案1:改用string原始类型并优化拼接逻辑

把String改为string,同时避免末尾多余的&:

// 用Record<string, any>替代any,让类型更明确
const setParams = (d_: Record<string, any>) => {
  return Object.entries(d_).map(([key, value]) => `${key}=${value}`).join('&');
};

const o = { data: {} };
x.send(setParams(o.data));

方案2:使用URLSearchParams(更规范)

TS推荐用内置的URLSearchParams处理查询参数,自动适配send()的类型要求,还能避免手动拼接的编码/格式错误:

const setParams = (d_: Record<string, any>) => new URLSearchParams(d_);

const o = { data: { id: 1, name: "demo" } };
x.send(setParams(o.data));

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 15:36:28