反应,打字稿-如何设置不同类型的状态属性

时间:2019-04-17 07:22:22

标签: reactjs typescript

当状态属性具有不同类型时,如何使用类型注释设置状态?例如,在这里我想编写两种方法-一种设置字符串,另一种设置数字:

import React, {Component} from 'react'

interface State {
  a: string
  b: string
  c: number
  d: number
}

class TestComponent extends Component<any, State> {
  state:State = {
    a: 'test',
    b: 'test',
    c: 1,
    d: 1
  }

  setStringProperty = (key:keyof State, value:string) => {
    this.setState({
      [key]:value
    })
  }


  render () {
    return <div>test</div>
  }
}

export default TestComponent

但是我遇到以下错误:

  

错误:(19,19)TS2345:类型'{[x:string]:string; }'是   不能分配给'State |类型的参数((prevState:   只读,道具:只读)=>状态|选择| null)|选择|空值'。   类型'{[x:string]:string; }'缺少以下属性   来自“选择”类型:a,b,c,d

虽然这很有意义,但我看不到如何编写用于设置不同状态属性(相同类型或不同类型)的通用方法?

0 个答案:

没有答案