FormData:类型“number”的参数不能赋给类型“string | Blob”的参数。ts(2345)

number值为什么不能赋值,大佬勿喷。

  const Add = async (values: any) => {
    console.log(values);
    const { firmwareName, version, file } = values;
    let vvv = new FormData();
    vvv.append("firmwareName", firmwareName);
    vvv.append("version", version);

    if (file) {
      const [{ originFileObj: firmwareFile }] = file;
      vvv.append("firmwareFile", firmwareFile);
    }
    vvv.append("id", id);

    const res = await http.post_token_data(api.updatefirmware, vvv, true);
    if (res?.code !== 20000)
      return message.warn(res?._llfididi ?? "不可预知的错误");
    message.success("修改成功");
    destroy(true);
  };

image.png
image.png

阅读 12k
3 个回答

vvv.append('id', id.toString())就行了。
其实你在控制台测试一下就知道了,vvv.append('id',5)确实是可以的,但是vvv.get('id')得到的结果也是'5',被转为字符了。

类型系统就这么约定的。假设人家要求必须是数字,非要传一个字符串,字符串内容还没有办法严格控制,搞出个NaN尴不尴尬,难不难受。类型系统不就是为了减少这种不必要的问题吗

看下来是没有搞明白formdata和json区别,formdata只能传字符串和文件。json是可以向内传数字布尔值什么的。在这里直接传入字符串就可以了,文档里是使用number,但后端也没有对formdata的类型做限制。


  const updateFirmware = async (values: UpdateFirmware) => {
    const { firmwareName, version, file } = values;
    let updataForm = new FormData();
    updataForm.append("firmwareName", firmwareName);
    updataForm.append("version", version);
    if (file) {
      const [{ originFileObj: firmwareFile }] = file;
      updataForm.append("firmwareFile", firmwareFile);
    }
    updataForm.append("id", id.toString());
    const res = await http.post_token_data(
      api.updatefirmware,
      updataForm,
      true
    );
    if (res?.code !== 20000)
      return message.warn(res?._llfididi ?? "不可预知的错误");
    message.success("修改成功");
    destroy(true);
  };
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Microsoft
子站问答
访问
宣传栏