3

该问题类似于如何从 Typescript 1.6 中的单独文件中正确导入 React JSX

当所有代码都在一个文件中时,它可以正常工作。但是当我将组件放到另一个文件中并尝试导入时,打字稿编译器会出错。

代码看起来不错。

我得到的错误是

JSX 元素类型“Hello”没有任何构造或调用签名。

应用程序.tsx

/// <reference path="typings/tsd.d.ts" />
import React = require('react');
import ReactDOM = require('react-dom');
import $ = require('jquery');
import Hello = require('./components/Hello');

$(()=>{
    ReactDOM.render(<Hello name="Tom" />,document.body);
});

组件/Hello.tsx

/// <reference path="../typings/tsd.d.ts" />
import React = require('react');

export default class Hello extends React.Component<any,any>{
    render(){
        return <div className="hello">Hello {this.props.name} !</div>;
    }
}

tsconfig.json

{
    "compilerOptions": {
        "module": "commonjs",
        "jsx": "react"
    }
}
4

1 回答 1

4

如果你写了这些行

export default class Hello ...
/* and */    
import Hello = require('./components/Hello');

然后你需要写这个来消费它:

<Hello.Hello name="Tom" />

您可以改为编写此代码,以更改模块以将类导出为其顶级对象:

class Hello ...
export = Hello

或者您可以Hello使用解构从模块导入导出:

import { Hello } from './components/Hello';

或者您可以从模块导入默认导出:

import Hello from './components/Hello';
于 2016-02-22T19:00:51.337 回答