我正在使用包react-native
的{{1}}项目作为提供远程和本地通知的解决方案。
如果我执行以下操作,一切都很顺利:
react-native-firebase
上述代码运行正常,没有任何投诉。然而,
import firebase from 'react-native-firebase'
...
const messagingPermission = await firebase.messaging().hasPermission()
抱怨
import firebase from 'react-native-firebase'
...
const customNotification = new firebase.notifications.Notification()
但是,如果我按照键入(ctrl + click)进行操作,那么我可以在那里看到类[ts] Property 'Notification' does not exist on type '{ (): Notifications;
nativeModuleExists: boolean }'
并输入。
我在这里错过了一个重要的打字稿课程,还是我忽略了?我确定正确打包了包,所以这里发生了什么?
如果您认为有用,我可以提供Notifications
。
tsconfig.json
编辑:添加了tsconfig
答案 0 :(得分:2)
这看起来像是我们的疏忽 - 我们错过了Typescript定义中的静态类型。我刚推出了一个修复程序,它将在今天晚些时候作为v4.0.2的一部分登陆:https://github.com/invertase/react-native-firebase/commit/590d69ce8985842e830c234e18d020efc98e76c8
答案 1 :(得分:0)
尝试将notifications
称为函数:firebase.notifications().Notification()
<强>为什么吗
查看错误消息:
[ts] Property 'Notification' does not exist on type '{ (): Notifications;
nativeModuleExists: boolean }'
这意味着firebase.notifications
的类型为{ (): Notifications; nativeModuleExists: boolean }
。
属性(): Notifications
是什么意思?在接口中,没有名称的属性()
表示接口本身是可调用的/表示函数,在此函数中返回Notifications
对象。这些callable interfaces也可以包含其他属性,例如nativeModuleExists
,因为函数是JavaScript中的第一类对象。
无论如何,错误消息准确地说明了什么是错误的,但它用来做这么做的语法有点模糊 - 使得本质上是一个错字似乎是一个更复杂的问题。