【问题标题】:Type 'false' is not assignable to type '((status: number) => boolean) | undefined' TypeScript类型 'false' 不可分配给类型 '((status: number) => boolean) |未定义的打字稿
【发布时间】:2020-08-27 08:51:44
【问题描述】:

我正在使用 TypeScript 和 Axios 制作模块,但是当我通过 AxiosRequestConfig 时收到此错误:

Type 'false' is not assignable to type '((status: number) => boolean) | undefined'.ts(2322)

代码:

const UIR = (await axios.get(`https://users.roblox.com/v1/users/${this.userId}`, { validateStatus: false })).data;
const USR = (await axios.get(`https://users.roblox.com/v1/users/${this.userId}/status`, { validateStatus: false })).data;

请帮助我,谢谢。我会尽力回答任何问题!

【问题讨论】:

    标签: node.js typescript npm axios


    【解决方案1】:

    Typescript 说你不能在那里传递false。您可以传递返回booleanundefinedfunction

    Axios README.md 说:

    validateStatus 定义是否解决或拒绝给定 HTTP 响应状态代码的承诺。如果validateStatus 返回true(或设置为nullundefined),则promise 将被解析;否则,promise 将被拒绝。

    因此,如果您希望始终通过验证,只需传递一个返回 true 或 undefined 的函数:

    const UIR = (await axios.get(url, { validateStatus: () => true })).data;
    /// Or
    const UIR = (await axios.get(url, { validateStatus: undefined })).data;
    

    其实from the source code你可以看到通过false就可以了。但我强烈建议按照文档所说的去做。

    【讨论】:

      【解决方案2】:

      期望类型是返回布尔值的函数。

      你只需要改变这个:

      { validateStatus: false }
      

      到这里:

      { validateStatus: () => false }
      

      【讨论】:

        猜你喜欢
        • 2023-01-22
        • 2021-08-19
        • 1970-01-01
        • 1970-01-01
        • 2017-04-23
        • 2021-10-11
        • 2019-07-12
        • 2020-08-07
        • 2020-06-29
        相关资源
        最近更新 更多