antd 的版本是:2.9.1 , node 的版本是:6.10.2 , tsc 版本是: 2.2.2 。
以 Button
这个组件为例。
根据 文档,在 ts 中我可以这样来引用(样式不用管):
import Button from 'antd/lib/button';
render(Button);
上面的 TypeScript 代码,通过 tsc
以 commonjs
方式来处理,结果是:
var button_1 = require("antd/lib/button");
render(button_1.default);
这就不对了。
因为 antd/lib/button/index.js
这个文件,最后加了一句:
module.exports = exports['default'];
于是, button_1
本来就是需要的对象了(一个函数),再取这个函数的 default
属性,就错了。
这样回过去看,按说,在 TypeScript
中应该写成:
import * as Button from 'antd/lib/button';
render(Button);
但是这又和 antd/lib/button/index.d.ts
中的定义不匹配,因为 index.d.ts
明确是:
export default Button;
所以,从现在的情况看:
要么,把
antd/lib/button/index.js
最后一行多余的module.exports
删除掉。要么,在
antd/lib/button/index.d.ts
中,只是export Button
,不要那个default
。
或者,是我哪里没用对?
antd的tsconfig里应该有这样一条配置,正常引用应该没问题的吧,楼主是直接编译antd的ts?