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