我正在尝试为flow-typed
模块创建基本的firebase-functions
定义。
此模块的示例用例如下:
// @flow
import * as functions from 'firebase-functions'
import create from './tasks/create'
const { firestore } = functions
exports.createCharacter = firestore
.document('characters/{characterID}')
.onCreate((snapshot, context) => create(snapshot, context))
到目前为止,我已经在flow-typed/firebase-functions.js
中创建了这个
// @flow
declare module 'firebase-functions' {
declare class firestore {
static document(path: string): void;
}
}
我现在停留在与文档链接的.onCreate(
部分上,流程不允许我扩展document
,而static document.opnCreate
无效。
答案 0 :(得分:1)
在流类型的库代码中,您告诉Flow document
函数返回void。
然后,您的应用程序代码正在使用该函数的结果,该函数先前已声明为void。我怀疑这就是编译器抱怨的原因:在空对象上调用onCreate
不起作用(或者至少是类型系统中的原因)。
如果执行此操作会发生什么:static document(path: string): firestore
。因为那是(大约:我不知道Firebase)这里发生了什么。
您现在当然需要声明函数onCreate
。
还值得注意的是,对于诸如firebase之类的Javascript模块,您不需要自己编写流类型的声明(除非您想要/不需要)。 flow-typed install firebase@5.x.x
应该为您安装一个社区创建(或生成)的流类型文件