ts中this的问题

在ts文件中本来是要对错误进行一个拦截,然后统一弹出一个message的,但是在这里调用this 会报错。

// 添加响应拦截
axiosTokenInstance.interceptors.response.use((response: any) => {
  if (response.data.statusCode !== 0) {
    this.$Message.error('haha');
  } else {
    return response.data;
  }
},
  (error) => {
    if (error.response) {
      const { message } = error.response.data;
      return Promise.reject(new Error(message));
    }
    return Promise.reject(error);
  }
);

然后修改了代码

const that = this;

// 添加响应拦截
axiosTokenInstance.interceptors.response.use((response: any) => {
  if (response.data.statusCode !== 0) {
    that.$Message.error('haha');
  } else {
    return response.data;
  }
},
  (error) => {
    if (error.response) {
      const { message } = error.response.data;
      return Promise.reject(new Error(message));
    }
    return Promise.reject(error);
  }
);

修改之后外面的this又被标红了[ts] "this" 隐式具有类型 "any",因为它没有类型注释。 [2683]谁能说下如何解决???/

阅读 22.2k
3 个回答

ts提供了// @ts-ignore给用户标注要忽略检查的代码

但是要注意this的对象引用,它是跟function() {}和() => {}的this引用是不一样的,既然使用了@ts-ignore,那一定要自己判断、调试正确了再提交代码,并且@ts-ignore不要滥用,否则就失去了ts的初衷了。

https://www.tslang.cn/docs/ha...

function outter(this: any) {
    const that = this;
    
    // 添加响应拦截
    axiosTokenInstance.interceptors.response.use((response: any) => {
      if (response.data.statusCode !== 0) {
        that.$Message.error('haha');
      } else {
        return response.data;
      }
    },
      (error) => {
        if (error.response) {
          const { message } = error.response.data;
          return Promise.reject(new Error(message));
        }
        return Promise.reject(error);
      }
    );
}

楼主你好,请问解决了没 ?
我也遇到了类似的问题,如果解决了,可否告知方法 ?

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进