我正在使用 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;
}
}