0

我正在使用 Typescript、nuxt/auth 和 nuxt/axios 开发 Nuxt.js 项目。我正在为我的 API 服务创建某种存储库。我有从后端收到的数据的 DTO。我有一个 UserDTO,它具有 API 在成功登录后发送的回复的确切架构,并且它有一个字段“id”。我想读取属性Vue.$auth.user.id并将其作为 get 参数传递。目前我无法更改后端的逻辑以使其仅根据我的令牌进行响应。以下显示了我遇到问题的地方。

我希望我this._user的类型是 UserDTO,它声明了一个“id”属性。但是$auth.user是一个Record<string,unknown>在编译时返回没有任何属性“id”的getter。

export class ServiceRepository{

  _api:ApiService;
  _vue:Vue;
  _user:UserDto | null;

  constructor(vue:Vue) {
    this._api = new ApiService(vue.$axios);
    this._vue = vue;
    this._user = vue.$auth.user;
  }

  // get userId(){
  //   let user = this._user as UserDto
  //   return this._vue.$auth.user.id;
  // }  

  async getUserPets() {
    const { data } = await this._api.query<PetDto>("pets", { params: { ownerId: this._user.id } });
    return data;
  }


我该怎么办?

更新

我按如下方式更改它并解决了问题,但我对我的做法不满意

  _api:ApiService;
  _vue:Vue;
  _user:Record<string,unknown> | null;

  constructor(vue:Vue) {
    this._api = new ApiService(vue.$axios);
    this._vue = vue;
    this._user = vue.$auth.user;
  }

  get userId():number|undefined{
    if (this._user !==null)
    {
      return this._user.id as number;
    }
  }  

4

0 回答 0