2016-08-12 85 views
0

我做一个简单的反应,和/快递应用程序,我在与打字稿编译器的问题,我的组件 container.jsxTypescript 2.1 React找不到模块。

import * as React from "react"; 

export default class Container extends React.Component{ 
    getInitialState(){ 
    return { 
     state: "" 
    } 
    } 

    render(){ 
    return (
     <div>hello world</div> 
    ) 
    } 
} 

server.ts

import * as express from "express"; 
import Container from "../components/container"; 
import * as ReactDOM from "react-dom"; 
let app = express(); 
app.get("/",(req, res)=>{ 
    ReactDOM.render(<Container/>,document.getElementById("app")); 
}); 


app.listen(9999,()=>{ 

}); 

VS代码亮点app.get中的回调并且说Argument of type 'Container' is not assignable to parameter of type 'Component<any, any>'. Property 'setState' is missing in type 'Container'.

当我运行编译器时,我得到关于正则表达式的错误。 我使用的是Typescript 2.1,昨晚的版本。

回答

1

在你server.ts,该ReactDOM.render(...)方法transpiles这样:

ReactDOM.render(React.createElement(Container, null), document.getElementById("app")); 

注意如何有一个React.createElement(...)方法代替<Container />取代。正因为如此,你必须在你的server.ts文件中使用import * as React from 'react'来满足转换后的React变量,它应该满足类型不匹配。