在 React 中,组件定义如下所示:
class Component<S> {
state:S;
setState(state:S):void;
}
你定义一个这样的组件:
interface MyState {
name: string;
age: number;
}
class MyComponent extends Component<MyState> { }
现在我遇到的问题是,在 React APIsetState
中应该使用部分状态对象调用,表示要更新的属性,如下所示:
setState({name: "Aaron"});
请注意,age
未声明。我遇到的问题是 TypeScript 不允许这样做,它给出了一个分配错误,如Property 'age' is missing
. 根据我的理解,这个react.d.ts
定义在这个意义上是错误的。但是有解决办法吗?
我试过这个:
setState({name: "Aaron"} as MyState);
但这会产生相同的错误,即使它在 Playground 中工作而不会出错。为什么它在 Playground 中有效?有任何想法吗?