как получить доступ к свойству переменной типа 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;
}
}