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!)
}