错误:“输入'字符串|从LocalStorage获取Item时,null'不可赋予...“

问题描述 投票:0回答:1

据我所知,我不能将null赋给字符串变量。我不明白为什么检查localStorage.getItem('language')设置的if子句不能解决这个问题。

错误:输入'string | null'不能赋值为'string'。类型'null'不能分配给'string'类型。

  setLanguage(lang: string) {
    if (lang) {
      this.language = i18n.locale = lang
      localStorage.setItem('language', lang)
    } else {
      if (localStorage.getItem('language')) {
        this.language = i18n.locale = localStorage.getItem('language')
      } else {
        let browserLang = navigator.language.split('-')[0]
        this.language = i18n.locale = browserLang
        localStorage.setItem('language', browserLang)
      }
    }
  }

谢谢。

typescript eslint tslint
1个回答
1
投票

我认为这源于你没有将它分配给变量的事实。第一次和第二次调用localStorage.getItem('language')可能会返回不同的结果(就typescript编译器而言)。 你可能想尝试类似的东西:

  setLanguage(lang: string) {
    if (lang) {
      this.language = i18n.locale = lang
      localStorage.setItem('language', lang)
    } else {
      const lang: string | null = localStorage.getItem('language'); // Notice how I'm setting a new variable here
      if (lang) {
        this.language = i18n.locale = lang;
      } else {
        let browserLang = navigator.language.split('-')[0]
        this.language = i18n.locale = browserLang
        localStorage.setItem('language', browserLang)
      }
    }
  }
© www.soinside.com 2019 - 2024. All rights reserved.