具有typescript的react.js,状态的类型对象错误不存在属性

时间:2018-11-18 14:31:22

标签: reactjs typescript

我正在尝试使用react.js文档中有关表单的代码,但是我将其与打字稿一起使用,代码在this link上,但是当我将其添加到打字稿文件中时,出现错误Property 'value' does not exist on type 'object'.

class MailListSubscribe extends React.Component<
  IMaterialUIComponentProps,
  object
> {
constructor(props: any) {
    super(props);
    this.state = {value: ''};

    this.handleSubmit = this.handleSubmit.bind(this);
  }
    handleSubmit(event: any) {
    // error appears on this.state.value
    alert('A name was submitted: ' + this.state.value);
    event.preventDefault();
  }
public render() {
return (
<form onSubmit={this.handleSubmit}>
          <label>
            Name:
            // error appears again on this.state.value
            <input type="text" value={this.state.value} onChange={this.handleChange} />
          </label>
          <input type="submit" value="Submit" />
        </form>
);

感谢您的帮助,谢谢!

1 个答案:

答案 0 :(得分:0)

React.Component的类型定义类似于Component <{{[key:string}:any},{[key:string]:any}>,即它可以使用带字符串键的任何Object和任何值类型

但是,当我们尝试指定对象时并非如此。而是尝试将类型模拟为“对象”类型。因此,它将无法从中找到任何自定义值。 检查官方打字稿文档中的this。我认为他们有足够的描述来解释这个问题。

此外,只需声明组件状态的类型,如下所示:

interface IState {
    value: string;
}