我正在尝试为react-grid-layout*.d.ts
提供一个文件。正如它的index.js文件所示,它导出了一个函数——被调用的子类:React.Component
ReactGridLayout
// react-grid-layout/index.js
module.exports = require('./build/ReactGridLayout').default;
module.exports.utils = require('./build/utils');
// ...
要求:
var ReactGridLayout = require('react-grid-layout');
console.log(ReactGridLayout);
// --> function ReactGridLayout(props , context) { ...
它还导出了一些其他东西,这些东西被分成了命名空间:
for (var f in ReactGridLayout) {
if (ReactGridLayout.hasOwnProperty(f)) {
console.log(f);
}
}
// --> utils
// ...
所以它会进行一次导出和多次导出。
我尝试了Typescript 站点上描述的Single Complex Object in Modules方法和GitHub 上的这个声明文件,但没有取得多大成功。
更新
现在忽略其他东西,我的定义ReactGridLayout
如下:
// react-grid-layout.d.ts
declare module 'react-grid-layout' {
import * as React from 'react';
export default class ReactGridLayout<P,S> extends React.Component<P,S> {
containerHeight():void;
onWidthChange(width:number):void;
/* more methods here ... */
}
哪个编译。但是它会生成如下 Javascript:
var react_grid_layout_1 = require('react-grid-layout');
React.createElement(react_grid_layout_1.default, null, ...
什么时候应该:
React.createElement(react_grid_layout_1, null, ...