首页 > 解决方案 > 在 TypeScript 中声明一个箭头函数作为返回

问题描述

我想为ReactMeteorData.jsx编写一个 TypeScript 声明,它导出:

export default function connect(options) {
  let expandedOptions = options;
  if (typeof options === 'function') {
    expandedOptions = {
      getMeteorData: options,
    };
  }

  const { getMeteorData, pure = true } = expandedOptions;

  const BaseComponent = pure ? ReactPureComponent : ReactComponent;
  return (WrappedComponent) => (
    class ReactMeteorDataComponent extends BaseComponent {
      ...
    }
  );
}

react-meteor-data.jsx将其重新打包为withTracker :

export { default as withTracker } from './ReactMeteorData.jsx';

我可以简单地将返回值声明为函数:

declare module 'meteor/react-meteor-data' {
  import * as React from 'react';    
  export function withTracker(func: () => {}): Function;

  ...
}

如何声明函数创建的参数和返回值,而无需更改原始包中的某些内容?所以我想做类似的事情:

export function withTracker(func: () => {}): (React.Component) => { React.Component };

代码的用法是这样的:

import * as React from 'react';
import { withTracker } from 'meteor/react-meteor-data';

class Header extends React.Component<any,any> {
  render() {
    return "test";
  }
}

export default withTracker(() => {
  return { user: 1 };
})(Header);

谢谢!

标签: javascripttypescriptmeteorreturn-valuearrow-functions

解决方案


你描述的类型可以这样写:

(c: React.Component) => React.Component

在部分declare module

export function withTracker(func: () => {}): (c: React.Component) => React.Component;

推荐阅读