javascript - React HOC 上的 Typescript

标签 javascript reactjs typescript eslint

我的 React HOC 结构如下:

import React from 'react';
import { CookiesConsumer } from './index';

const withCookies = (WrappedComponent: any) => (props: any) => (
  <CookiesConsumer>
    {cookies => (
      <WrappedComponent
        {...props}
        cookiesContext={cookies}
      />
    )}
  </CookiesConsumer>
);

export default withCookies;

我收到了 2 个 Typescript eslint 警告,我想修复它。两者都在 any 类型声明上:

任何意外。指定不同的类型。eslint(@typescript-eslint/no-explicit-any)

对于 props 类型,我不知道 props 对象中可能有哪些属性或值类型,那么如何才能比 any 更好地定义它?

对于 WrappedComponent 类型,我尝试了 ReactNodeReactElement 等类型,但这在实际使用时引发了一个新错误:JSX 元素类型“WrappedComponent”没有任何构造或调用签名。

最佳答案

import React from 'react';
import { CookiesConsumer } from './index';

interface withCookiesProps {
    someProp: boolean;
  }


const withCookies = <P extends object>(WrappedComponent: React.ComponentType<P>) => (props: P & withCookiesProps) => (
  <CookiesConsumer>
    {cookies => (
      <WrappedComponent
        {...props}
        cookiesContext={cookies}
      />
    )}
  </CookiesConsumer>
);

export default withCookies;

Refernence

关于javascript - React HOC 上的 Typescript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56561137/

相关文章:

javascript - 一个函数在不同的控制台中给出不同的结果

javascript - js 样式不起作用

javascript - 有没有更漂亮的方法来捕获 JSON 数组 block 上的错误?

javascript - 使用 React Router 和 Webpack 2 如何仅在某些路由上需要外部库?

javascript - 需要 ('core-js/es6/map' )polyfill 不适用于 IE11 上的展开 Map 对象

javascript 交替颜色表行

javascript - 未捕获的类型错误和固定数据表

javascript - 学习 React 概念证明

angular - 在生产构建 Angular 4 中访问环境变量

angular - 如何捕获 Angular 2 中的内联模板错误?