如何流式链接函数?

时间:2018-07-21 13:13:19

标签: javascript firebase google-cloud-functions flowtype

我正在尝试为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无效。

1 个答案:

答案 0 :(得分:1)

在流类型的库代码中,您告诉Flow document函数返回void。

然后,您的应用程序代码正在使用该函数的结果,该函数先前已声明为void。我怀疑这就是编译器抱怨的原因:在空对象上调用onCreate不起作用(或者至少是类型系统中的原因)。

如果执行此操作会发生什么:static document(path: string): firestore。因为那是(大约:我不知道Firebase)这里发生了什么。

您现在当然需要声明函数onCreate

还值得注意的是,对于诸如firebase之类的Javascript模块,您不需要自己编写流类型的声明(除非您想要/不需要)。 flow-typed install firebase@5.x.x应该为您安装一个社区创建(或生成)的流类型文件