据我所知,我不能将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)
}
}
}
谢谢。
我认为这源于你没有将它分配给变量的事实。第一次和第二次调用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)
}
}
}