为现有模块创建d.ts文件

时间:2015-11-20 03:09:49

标签: module typescript

我正在尝试为React StaticContainer库创建一个d.ts文件。

NPM中安装的lib如下所示:

var React = require('react');

var StaticContainer = (function (_React$Component) {

  function StaticContainer() {
    // ...
  }

  // ...

  return StaticContainer;
})(React.Component);

module.exports = StaticContainer;

示例用法如下:

var StaticContainer = require('react-static-container');

我不确定如何为此创建声明并在TypeScript中使用它。从我的研究到目前为止,我已经想出了这个:

import * as StaticContainer from 'react-static-container'

这个d.ts文件:

interface StaticContainer extends React.Component<any, any> {
  shouldUpdate?:boolean;
}

declare module "react-static-container" {
  export = StaticContainer;
}

但是TSC给了我这个错误:

  

错误:(3,34)TS2497:模块'“react-static-container”'解析为非模块实体,无法使用此结构导入。

我很担心module.exports = StaticContainer应该如何转换为d.ts文件。这是怎么做到的?

1 个答案:

答案 0 :(得分:1)

  

模块&#39;&#34;反应静态容器&#34;&#39;解析为非模块实体,无法使用此结构导入。

错误说的正是如此。您需要使用export =导入import require样式库。这是因为ES6规范。

import StaticContainer =  require('react-state-container');