React-bootstrapからこのサンプルコードを試すと、「パラメーター 'context'は暗黙的に 'any'タイプを持っています;「タイプ 'Readonly <{}>'にはプロパティ 'value'が存在しません。
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 />
);
TypeScriptでは @ types/react をインストールする必要があり、React.Componentを拡張するときに、小道具と状態のタイプを指定する必要があります。ここに例があります
import * as React from 'react'
interface Props {
... // your props validation
}
interface State {
... // state types
}
class FormExample extends React.Component<Props, State> {... }
それがあなたを助けることを願っています
私の場合、コンストラクターパラメーターの型を指定すると、この問題が解決しました。
class Clock extends React.Component<any, any> {
constructor(props: any) {
super(props);
}
}
タイプスクリプトでは、送信する小道具のタイプを指定する必要があります。または、@ types/reactで定義されたデフォルトのタイプを使用します。タイプを指定したくない場合は、明示的にコンポーネントに状態と「任意の」タイプの小道具を期待するように要求してください。
class FormExample extends React.Component<any,any> {
最初のタイプの引数は、期待するプロップのタイプを定義するためのもので、もう1つはコンポーネントの状態のタイプのためのものです。
機能コンポーネントでこのエラーが発生しました。
props.children
やカスタムプロップなどの情報を取得するには、次の手順を実行する必要があります。
import { FunctionComponent } from 'react';
const Layout: FunctionComponent<{ hello: string }> = props => (
<div style={layoutStyle}>
<Header />
{props.hello}
{props.children}
</div>
);