Javascript 类型脚本错误-类型';字符串[]和#x27;不能用作索引类型
我的Ionic/Angular应用程序有一个typescript错误。下面写着: 类型“string[]”不能用作索引类型 我不明白。整个错误是: [17:57:57]typescript:C:/xampp/htdocs/project x/anonymous social/src/pages/threads/threads.ts,第58行 类型“string[]”不能用作索引类型 L58:让threadId=Object(snapshot.val()[Object.keys(snapshot.val())]).threadId L59:let messageCount=snapshot.val().unread | | 0 我的代码是:Javascript 类型脚本错误-类型';字符串[]和#x27;不能用作索引类型,javascript,angular,typescript,Javascript,Angular,Typescript,我的Ionic/Angular应用程序有一个typescript错误。下面写着: 类型“string[]”不能用作索引类型 我不明白。整个错误是: [17:57:57]typescript:C:/xampp/htdocs/project x/anonymous social/src/pages/threads/threads.ts,第58行 类型“string[]”不能用作索引类型 L58:让threadId=Object(snapshot.val()[Object.keys(snapshot.
this.database.database.ref('/users/'+this.userData.uid+'/threads/')
.orderByChild('threadId')
.on('child_added', (snapshot) => {
let threadId = Object(snapshot.val()[Object.keys(snapshot.val())]).threadId;
let messageCount = snapshot.val().unread || 0;
rec.push(Object(snapshot.val()[Object.keys(snapshot.val())]));
知道为什么会这样吗?我不完全明白。。。任何帮助都会很好 在snapshot.val()[Object.keys(snapshot.val())]
中,您试图使用Object.keys(snapshot.val())
索引到snapshot.val()
Object.keys
返回类型string[]
有什么原因不能直接使用:
let threadId = snapshot.val().threadId;
我不认为需要所有这些额外的逻辑。是的,
snapshot.val()
返回此图像中的第一行:而objectkeys则返回第二行……快照值的预期形状是什么?听起来好像你期望它只有一个键值对,而你期望Object.keys
给你一个键。但是Object.keys
返回一个键数组。如果您确实确定它会有一个,那么您可以将其更改为Object.keys(snapshot.val())[0]
,TS也可以,但我认为这里有很多不必要的复杂性。