我正在创建一个简单的React / express应用程序,我遇到了Typescript编译器和我的组件的问题 container.jsx
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,昨晚的版本。
答案 0 :(得分:1)
在您的server.ts中,ReactDOM.render(...)
方法转换为:
ReactDOM.render(React.createElement(Container, null), document.getElementById("app"));
请注意,React.createElement(...)
方法取代<Container />
是如何替代的。因此,您必须在server.ts文件中import * as React from 'react'
以满足已转换的React变量,该变量应满足类型不匹配。