我正在转换一个JS文件到TS,在我的React原生项目,但偶然发现这个问题,我不能解决的地方value['flag']
显示以下错误,'值'是类型'unknown'. ts(18046).任何关于如何解决这个问题的想法将不胜感激.
代码块如下所示:
for (const [key, value] of Object.entries(orderedCities)) {
if (
key.startsWith(userInput.toLowerCase()) &&
userInput != '' &&
value !== typeof undefined
) {
const inputObject = {city: '', flag: ''};
inputObject.city = key;
inputObject.flag = value['flag'];
creationArray.push(inputObject);
setElementArray(creationArray);
}
}
我尝试在const [key,value]中声明一个类型,但这触发了一个不同的错误,我添加了value !== typeof undefined
,但这没有改变显示的错误。
3条答案
按热度按时间ujv3wf0j1#
当你想迭代对象时,使用
for..in
。6ojccjat2#
你期望
value
是一个属性为{ flag: string }
的对象。现在整个value
的类型为unknown
。它甚至不知道它是一个object
。这意味着**
orderedCities
变量的类型有问题**,也就是说,问题出在代码的更高层次。也许你初始化了一个空字典而没有声明它的类型。如果我把
orderedCities
创建为:我可以通过使用正确的类型创建
orderedCities
来消除这个错误:你会想要删除你尝试的解决方案
&& value !== typeof undefined
。这是没有意义的,因为typeof undefined
是一个string
。一旦你在orderedCities
上有了正确的类型,它会给予你一个错误。更正代码:
型
TSPlayground链接
56lgkhnf3#
将
value
转换为city
类型,假设它名为ICity
: