当我从react-bootstrap尝试这个示例代码时,我不断收到诸如"之类的错误。参数' context'隐含地有一个“任何”的类型; "财产'价值'类型' Readonly< {}>'上不存在。"
在form.tsx中:
class FormExample extends React.Component {
constructor(props, context) {
super(props, context);
this.handleChange = this.handleChange.bind(this);
this.state = {
value: ''
};
}
getValidationState() {
const length = this.state.value.length;
if (length > 10) return 'success';
else if (length > 5) return 'warning';
else if (length > 0) return 'error';
return null;
}
handleChange(e) {
this.setState({ value: e.target.value });
}
render() {
return (
<form>
<FormGroup
controlId="formBasicText"
validationState={this.getValidationState()}
>
<ControlLabel>Working example with validation</ControlLabel>
<FormControl
type="text"
value={this.state.value}
placeholder="Enter text"
onChange={this.handleChange}
/>
<FormControl.Feedback />
<HelpBlock>Validation is based on string length.</HelpBlock>
</FormGroup>
</form>
);
}
}
export default FormExample;
在Jumbo.tsx中:
const Jumbo = () => (
<FormExample />
);
答案 0 :(得分:9)
在typeScript中你应该安装@types/react并在扩展React.Component时需要指定props和state类型。 这是示例
var chess = $(".choice");
答案 1 :(得分:7)
在我的例子中指定构造函数参数的类型解决了这个问题。
class Clock extends React.Component<any, any> {
constructor(props: any) {
super(props);
}
}
答案 2 :(得分:5)
我只是在功能组件上遇到了此错误。
为了获取诸如props.children
之类的信息以及自定义道具,您应该执行以下操作。
import { FunctionComponent } from 'react';
const Layout: FunctionComponent<{ hello: string }> = props => (
<div style={layoutStyle}>
<Header />
{props.hello}
{props.children}
</div>
);
答案 3 :(得分:1)
在类型脚本中,您需要指定要发送的道具类型,或者采用默认类型tin @ types / react。如果你不想指定任何类型,那么明确要求组件期望'any'类型的状态和道具。
whitelistURL = abc.com,xyz.com
第一个类型参数用于定义您期望的道具类型,另一个用于组件的状态类型。