javascript - 在 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);
谢谢!
解决方案
你描述的类型可以这样写:
(c: React.Component) => React.Component
在部分declare module
:
export function withTracker(func: () => {}): (c: React.Component) => React.Component;
推荐阅读
- spring - 如何使用 MockHttpSession 和 Junit 进行模拟
- json - 如何在 Swift 中使用带有自定义类型值的可解码协议?
- javascript - 如何从 Ionic 4 中的 TypeScript 文件调用 iframe 显示的网页中的 JavaScript 函数?
- kotlin - 具有多种类型的 Equals 重载使运算符 '==' 不能应用于
- php - 在while循环中计算总和到数组
- php - Laravel 主机不允许连接到这个 mysql 服务器(Centos 7)
- swift - 将html转换为字符串时如何设置NSAttributedString的字体大小?
- javascript - 基于复选框添加和删除 URL 参数
- c - 链表创建中的无限循环
- webdriver-io - wdio.conf.js 文件中“runner”的有效值是什么?