当我使用我的"语言;const:";类型"null"不能用作索引类型">
const language =
localStorage.getItem("language") !== null
? localStorage.getItem("language")
: "en";
someText = someArray[language];
我该如何修复它?当我防止语言常量为null时,为什么不起作用?(我知道索引选择器必须按字符串/数字(
这里的问题(以及TypeScript无法推断出language
的正确类型的原因(是localStorage.getItem("language")
被评估了两次,而且据编译器所知,它也可以在第二次调用时返回null
。
使用??
运算符排除language
为null
的可能性。
const language = localStorage.getItem("language") ?? "en";
someText = someArray[language];
您可以使用Nullish合并运算符(??(稍微调整一下代码,这基本上就是GOTO共享的。只是解释它的名字&工作
let someText = someArray[(localStorage.getItem("language") ?? "en")]
从MDN文档中,零合并运算符(??(是一种逻辑运算符,当其左侧操作数为空或未定义时,它返回右侧操作数,否则返回左侧操作数。