如何扩展 express$Request 的流类型?

How can I extend a flow type for express$Request?

我正在使用 flow-typed,所以它有一个 express 定义。在我的代码中,我有:

isPayloadSignatureValid(req /*: express$Request */ ) {
  const rawBodyPayload = Buffer.from(req.rawBody).toString('utf8')

但是流量抱怨说:

Cannot get req.rawBody because property rawBody is missing in express$Request [1].

在我的 interfaces/express.js 中,我有:

// @flow
/*::
type express$Request = exports.Request & {
  rawBody: string
}
export type { express$Request };
*/

在我的 .flowconfig 中,我有:


[include]
./interfaces/.*

那么为什么扩展 express$Request 没有 rawBody 属性?

谢谢

当您实际使用 express 时,您不会从 interfaces/express.js 获取类型。您需要自己导入并注入。通常在这种情况下,您只想直接从流类型中修改 express libdef。另外你应该避免在这里使用交集类型,你应该传播对象类型(...)。