【发布时间】:2016-08-06 15:06:07
【问题描述】:
在 React 中,Component definition 看起来像这样:
class Component<S> {
state:S;
setState(state:S):void;
}
然后你定义一个这样的组件:
interface MyState {
name: string;
age: number;
}
class MyComponent extends Component<MyState> { }
现在我遇到的问题是,在 React API 中 setState 应该使用 partial 状态对象调用,表示要更新的属性,如下所示:
setState({name: "Aaron"});
请注意,age 未声明。我遇到的问题是 TypeScript 不允许这样做,它会给出像 Property 'age' is missing 这样的赋值错误。据我了解,react.d.ts 的定义在这个意义上是错误的。但是有解决办法吗?
我试过了:
setState({name: "Aaron"} as MyState);
但这给出了同样的错误,即使它works in the Playground 没有给出错误。为什么它在操场上有效?有什么想法吗?
【问题讨论】:
-
我以某种方式设法让部分类型与
Object.assign一起使用(完全使用类型检查,无需创建带有可选成员的接口声明),但我仍然不确定如何。相同的代码在一个项目中有效,但在另一个项目中无效。一旦我弄清楚了,我会发布更新。
标签: reactjs typescript