typescript在使用json.parse配合localStorage.getItem时的报错解决

5,770 阅读1分钟

在使用类似

JSON.parse(localStorage.getItem(xxxx))

的使用会报错,如图:

WX20200531-175050@2x

原因:JSON.parse的第一个参数必须是string类型

但是localStorage.getItem的返回值可以是string或者null

解决办法:

  • 使用typeof判断localStorage.getItem返回的类型是不是string

    let LOGIN_DATA;
    let _LOGIN_DATA_KEY = localStorage.getItem(xxxx);
    if (typeof _LOGIN_DATA_KEY === "string") {
      LOGIN_DATA = JSON.parse(_LOGIN_DATA_KEY);
    }
    
  • 在JSON.parse里面加个兼容

    JSON.parse(localStorage.getItem(xxxx) || '{}');
    
  • 加类型断言(不推荐):如果localStorage.getItem(xxxx)确实是一个null的话,运行时就会报错

    const LOGIN_DATA = JSON.parse( localStorage.getItem(xxxx) as string );