首页 > 解决方案 > 元素隐含地具有“任何”类型,因为类型的表达式......当使用需要类型字符串的函数时

问题描述

我正在做一个带有快速后端应用程序的 Angular。后端给了我这样的回应

控制台.log(res) -->

{
    "ok": true,
    "msg": "Login ok",
    "auth": "xxxxxxxxxxxx"
}

现在我得到了回复,我正在尝试将其保存在 localStorage

localStorage.setItem('auth', res['auth']); //also tried res.get('auth');

但是 setItem 接收字符串作为第一个元素,接收字符串作为第二个元素,我不断收到以下错误:

元素隐含地具有“任何”类型,因为类型“auth”的表达式不能用于索引类型“Object”。

标签: angulartypescript

解决方案


您可以创建一个接口并将后端响应类型设置为它,如下所示:

export interface BackEndResponse{
    ok: boolean;
    message: string;
    auth: string;
}

我不知道您是如何查询后端的,但这是一个订阅发出请求并将对象作为可观察对象返回的方法的示例,

setLocalStorage(): void {
    this.yourBackEndService.getBackEndInfo().subscribe((backEndResponse) => {
      localStorage.setItem('auth', backEndResponse.auth);
      // ...
    });
  }


推荐阅读