Rya*_*n Z 6 javascript flowtype
我有这样的类型:
type Cool = {
[key: string]: number
}
Run Code Online (Sandbox Code Playgroud)
现在,假设我有一个该类型的对象:
let my: Cool = {
"asdf": 1,
"jkl": 2
}
Run Code Online (Sandbox Code Playgroud)
当我跑步时Object.entries(my),我得到了[["asdf", 1], ["jkl", 2]]。这似乎很正常。但是,我想将每个键组合起来形成一个字符串,如下所示:
let mystring = "";
Object.entries(my).forEach(entry => {
mystring = entry[1] + mystring;
});
Run Code Online (Sandbox Code Playgroud)
我希望它mystring等于“jklasdf”,确实如此。但是,我mystring = ...在线路上遇到了流程错误。错误指出:
无法转换
Object.entries(...)[0][1]为字符串,因为混合 [1] 与字符串不兼容
关于如何解决这个问题的任何想法?谢谢!
Object.entries 键入为:
静态条目(对象:$NotNullOrVoid):数组<[字符串,混合]>
当您尝试使用mixed类型的值时,您必须首先弄清楚实际类型是什么,否则最终会出现错误,因此您可以使用 Flow 的类型细化:
Object.entries(my).forEach(entry => {
if (typeof entry[1] === 'number') {
mystring = entry[1] + mystring;
}
});
Run Code Online (Sandbox Code Playgroud)
你也可以只投entry[1]:
Object.entries(my).forEach(entry => {
mystring = Number(entry[1]) + mystring;
});
Run Code Online (Sandbox Code Playgroud)
或者entry像这样添加类型,entry: [string, any]但请注意使用 any 是完全不安全的,应尽可能避免。
| 归档时间: |
|
| 查看次数: |
1581 次 |
| 最近记录: |