簡體   English   中英

在TypeScript中聲明一個箭頭函數作為返回值

[英]Declare an arrow function as return in 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';

我可以簡單地將返回值聲明為Function:

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);

謝謝!

您描述的類型可以這樣寫:

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

在部分中declare module

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM