Reactjs 如何为调用React setState及其参数的函数创建TypeScript类型?

Reactjs 如何为调用React setState及其参数的函数创建TypeScript类型?,reactjs,typescript,Reactjs,Typescript,这不起作用,因为Partial返回的类型可以将未定义的作为设置状态不可接受的值 interface IState { bar: number baz: boolean } class App extends React.Component<{}, IState> { constructor(props) { super(props) this.state = { bar: 123, baz: false, } }

这不起作用,因为
Partial
返回的类型可以将
未定义的
作为
设置状态
不可接受的值

interface IState {
  bar: number
  baz: boolean
}

class App extends React.Component<{}, IState> {
  constructor(props) {
    super(props)
    this.state = {
      bar: 123,
      baz: false,
    }
  }
  public render() {
    return null
  }
  public update(options: Partial<IState>) {
    this.setState(options)
  }
  public callUpdate() {
    this.update({ bar: 4 })
  }
}
有没有更好的办法


typescript版本:3.2.1

您可能需要使用类型断言

this.setState(options as IState)

不建议使用
this.setState({…this.state,…options})
,因为您必须分解当前状态对象,这是不必要的

如果您确定该选项从未定义过,则可以在非空断言运算符的选项后添加感叹号

  public update(options: Partial<IState>) {
    this.setState(options!)
  }
公共更新(选项:部分){
this.setState(选项!)
}
我想指出的是,使用
this.setState({…this.state,…options})
会导致数据丢失。因为此.state在下次渲染之前不会更新。如果要使用当前状态,则应使用
this.setState(state=>({…state,…options})

  public update(options: Partial<IState>) {
    this.setState(options!)
  }