react / typescript:参数'道具'隐含地有一个“任何”的类型错误

时间:2018-03-07 04:32:05

标签: twitter-bootstrap reactjs typescript redux

当我从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 />
);

4 个答案:

答案 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

第一个类型参数用于定义您期望的道具类型,另一个用于组件的状态类型。