首页 > 解决方案 > 无法将任何类型分配给 localStorage

问题描述

const getAccessToken = () => {
    if (localStorage.getItem('tokens')) {
      const token = JSON.parse(localStorage.getItem('tokens'))['accessToken'];
      return token
    } else {
      return null;
    }
  }

我在 localStorage.getItem('tokens') 部分收到错误。

错误:

Argument of type 'string | null' is not assignable to parameter of type 'string'.
  Type 'null' is not assignable to type 'string'.

我尝试声明类型:任何但问题仍然没有解决

标签: typescript

解决方案


尝试将表达式移动localStorage.getItem('tokens')到变量:

const getAccessToken = () => {
  let tokens = localStorage.getItem('tokens')
  if (tokens) {
    const token = JSON.parse(tokens)['accessToken'];
    return token
  } else {
    return null;
  }
}

操场

这里的问题是,当您使用表达式时,编译器无法将其与if已经发生的检查相关联,因此无法为其提供正确的类型,即string. 相反,它仍然被考虑string | null


推荐阅读