我有两个文件comment.tsx和commentlist.tsx
comment.tsx看起来像这样:
/// <reference path="./typings/react/react.d.ts" />
/// <reference path="./typings/react/react-dom.d.ts" />
/// <reference path="interfaces.d.ts" />
import * as React from "react";
import * as ReactDOM from "react-dom";
namespace W.T.F {
export class Comment extends React.Component<ICommentData, {}>{
constructor(props: ICommentData) {
super(props);
}
public render() {
return (
<div className="comment">
<h2 className="commentAuthor">{this.props.Author}</h2>
<span>{this.props.Text}</span>
</div>
);
}
}
}
和commentlist.tsx
/// <reference path="./typings/react/react.d.ts" />
/// <reference path="./typings/react/react-dom.d.ts" />
/// <reference path="comment.tsx" />
/// <reference path="interfaces.d.ts" />
import * as React from "react";
import * as ReactDOM from "react-dom";
import Comment = W.T.F.Comment;
namespace W.T.F {
export class CommentList extends React.Component<ICommentListData, {}>{
public render() {
var commentNodes = this.props.Data.map(function (comment: ICommentData) {
return (
<Comment Author={comment.Author} Text={comment.Text}>{comment.Text}</Comment>
);
});
return (
<div className="commentList">
{commentNodes}
</div>
);
}
};
}
编译这些文件会带来错误
commentlist.tsx(8,24)TS2305模块'W.T.F'没有导出成员'评论'。
我的来源有什么问题?
从其他文件导入其他反应类(包含在命名空间中)的最佳方法是什么?
答案 0 :(得分:0)
如果有任何顶级导入,TypeScript会将文件视为外部模块,并且示例中的命名空间将成为模块的一部分。
大多数项目都希望使用没有名称空间的外部模块,但是要按照您尝试的方式使用名称空间,使用这样的旧引用/导入语法,并在名称空间内定义导入:
/// <reference path="./typings/react/react.d.ts" />
namespace W.T.F {
import React = __React;
export class Comment extends React.Component<ICommentData, {}>{
constructor(props: ICommentData) {
super(props);
}
public render() {
return (
<div className="comment">
<h2 className="commentAuthor">{this.props.Author}</h2>
<span>{this.props.Text}</span>
</div>
);
}
}
}