typescript - Typescript 对象的类型未知,firebase 函数
问题描述
我对用 typescript 编写的 firebase 函数有疑问。
首先我有一些背景信息:
实时数据库的 /tokens ref 的数据结构:
Tokens: [
TOKENS_ID: {
token: String
},
]
以下代码给了我编译错误:
export const onBlogPost = functions.database.ref("/blogs/{bid}")
.onCreate((blogData) => {
console.log(JSON.stringify(blogData.val()));
admin.database().ref("/tokens").once("value")
.then((snapshot) => {
const data = snapshot.val();
const tokens = Object.values(data).map((value) => {
console.log(JSON.stringify(value));
const token = value.token;
return token;
});
return console.log(JSON.stringify(tokens));
});
});
问题出在.then((snapshot) => {...}
零件之内。这部分代码的目标是将数据快照中的所有对象转换为仅包含标记的单个数组。
编译错误发生在具有以下代码的行上:
const token = value.token;
编译错误如下:
src/index.ts(14,29): error TS2571: Object is of type 'unknown'.
对此的正确解决方案是什么,我试图为变量值分配一个类型,map()
但这却失败了。
解决方案
强制类型为:
const token: string = value.token;
或者
const token = value.token as string;
推荐阅读
- laravel - Laravel - The Date of Birth does not match the format Y-m-d. in Maatwebsite Excel Upload
- recharts - 刻度轴脱离 svg 条形图
- command-line - Symantec Workspace Virtualization SVSCMD Viewing Delete List Item Entries
- sql - LEFT-JOIN 代替带有 where 子句的 oracle (+)
- ruby - How to simulate multiple `gets` (user input) with RSpec
- drupal - Close Date isn't filtering as a date, but as a String. How can this be resolved?
- python - Parsing a CSV of Nested JSONs
- javascript - Document.queryselector not working on nested element
- laravel - 不支持 DELETE 方法。支持的方法:GET、HEAD、POST。我现在应该做什么?
- javascript - 如何将两个属性值相加,迭代对象的属性?js