как получить доступ к свойству переменной типа Record <string,unknown>?

Я работаю над проектом Nuxt.js с Typescript, nuxt / auth и nuxt / axios. Я создаю своего рода репозиторий для своих API-сервисов. У меня есть DTO для данных, которые я получаю от серверной части. У меня есть UserDTO, который имеет точную схему ответа, который API отправляет после успешного входа в систему, и имеет поле «id». Я хочу прочитать свойство Vue.$auth.user.idи передайте его как параметр get. в настоящее время я не могу изменить логику на сервере, чтобы он отвечал только на мой токен. следующее показывает, где у меня проблемы.

Я хочу мое this._userиметь тип UserDTO, который объявляет свойство id. но $auth.user является геттером, возвращающим Record<string,unknown> который во время компиляции не имеет свойства «id».

      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;
    }
  }  

0 ответов

Другие вопросы по тегам