【发布时间】:2016-06-28 13:07:16
【问题描述】:
我正在尝试为 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 网站和 this declaration file on GitHub 上描述的 Single Complex Object in Modules 方法,但没有太大成功。
更新
暂时忽略其他内容,我对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, ...
【问题讨论】:
标签: javascript reactjs typescript react-grid-layout