为什么接口AxiosRequestConfig中timeout要限定为number类型?

来源:6-2 错误处理- 网络错误+超时错误+非200状态码+demo

FDirector

2021-03-25

老师您好,我理解,axios的config参数是用户填写的,没法保证带入的timeout为number类型,而我们却在接口AxiosRequestConfig中限定timeout为number,这也就是说,相当于我们已经在后续的处理逻辑中,默认用户填写的就是number类型。

那如果用户带入的timeout就是不规范的,比如:“1000”,“1000ms”,甚至"akjshdaj",那不会发生错误么?

我们是否应该指定timeout为 timeout?: any,然后根据用户带入的config.timeout进行类型判断,如果是"1000"或"1000ms"这种的就转换成1000,如果是NaN就抛出错误或者警告。

下面是老师在教程中写的源码:

export interface AxiosRequestConfig {
  // ...
  timeout?: number
}
const { /*...*/ timeout } = config

if (timeout) {
  request.timeout = timeout
}

request.ontimeout = function handleTimeout() {
  reject(new Error(`Timeout of ${timeout} ms exceeded`))
}
写回答

1回答

ustbhuangyi

2021-03-25

timeout 是开发者传的啊,也就是 axios 的使用者传的,那么当然应该限制类型为 Number 了,避免传一个非法的类型呀。

0
3
FDirector
回复
ustbhuangyi
明白了,非常感谢!
2021-03-27
共3条回复

下一代前端开发语言 TypeScript从零重构axios

课程从零开始重构功能完整的JS库,是学习造轮子的不二之选!

2629 学习 · 877 问题

查看课程