Javascript 通过HOC提供数据,但在调用组件属性时'';类型'中缺少;{}';但类型为'';出现错误

Javascript 通过HOC提供数据,但在调用组件属性时'';类型'中缺少;{}';但类型为'';出现错误,javascript,reactjs,react-hooks,higher-order-components,Javascript,Reactjs,React Hooks,Higher Order Components,我有以下HOC组件为我的组件提供firebase: import React from 'react' const FirebaseContext = React.createContext({}) export const withFirebase = <Props extends object>( Component: React.ComponentType<Props> ): React.ComponentType<Props> =>

我有以下HOC组件为我的组件提供firebase:

import React from 'react'

const FirebaseContext = React.createContext({})

export const withFirebase = <Props extends object>(
  Component: React.ComponentType<Props>
): React.ComponentType<Props> =>
  class WithFirebase extends React.Component<Props> {
    render(): React.ReactNode {
      return (
        <FirebaseContext.Consumer>
          {(firebase): React.ReactNode => (
            <Component {...this.props} firebase={firebase} />
          )}
        </FirebaseContext.Consumer>
      )
    }
  }

export default FirebaseContext
从“React”导入React
const FirebaseContext=React.createContext({})
使用Firebase导出常量=(
组件:React.ComponentType
):React.ComponentType=>
使用Firebase扩展React.Component初始化{
render():React.ReactNode{
返回(
{(firebase):React.ReactNode=>(
)}
)
}
}
导出默认FirebaseContext
我的组件如下所示:

import React from 'react'
import Firebase, { withFirebase } from '../Firebase'


interface FirebaseInterface {
  firebase: Firebase
}

const SignInGoogle: React.FC<FirebaseInterface> = ({ firebase }) => {
//component content
}

export default withFirebase(SignInGoogle)
从“React”导入React
从“../Firebase”导入Firebase,{withFirebase}
接口FirebaseInterface{
火基
}
const signingogle:React.FC=({firebase})=>{
//成分含量
}
使用Firebase导出默认值(登录日志)
但每当我在页面中调用我的组件时,就会出现以下错误:
属性“firebase”在类型“{}”中缺失,但在类型“FirebaseInterface”中是必需的。
SignInEmail.tsx(48,3):“firebase”在此处声明。
(我的组件)


Firebase是由我的HOC组件提供的,因此如何才能消除此错误?我做错了什么

问题在于,您实际上减少了
withFirebase
HOC中所需的属性,但您的返回类型没有反映这一点。尝试:

import React from 'react'

const FirebaseContext = React.createContext({})

export const withFirebase = <Props extends { firebase: Firebase }>(
  Component: React.ComponentType<Props>
): React.ComponentType<Omit<Props,'firebase'>> =>
  class WithFirebase extends React.Component<Props> {
    render(): React.ReactNode {
      return (
        <FirebaseContext.Consumer>
          {(firebase): React.ReactNode => (
            <Component {...this.props} firebase={firebase} />
          )}
        </FirebaseContext.Consumer>
      )
    }
  }

export default FirebaseContext
从“React”导入React
const FirebaseContext=React.createContext({})
使用Firebase导出常量=(
组件:React.ComponentType
):React.ComponentType=>
使用Firebase扩展React.Component初始化{
render():React.ReactNode{
返回(
{(firebase):React.ReactNode=>(
)}
)
}
}
导出默认FirebaseContext

ommit
helper需要ts 3.5,但它也可以在react-typings中使用(我想)。该点给出了一个需要
firebase
返回一个不需要的组件的组件,感谢您的帮助!不幸的是,它不起作用,弹出了以下错误
Type'typeof with firebase'不可分配给Type'ComponentType'。
在类with firebase上实际上它起作用了,我不得不从所有的props接口中省略它!非常感谢。