相关疑难解决方法(0)

TypeScript部分接口对象

在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中工作而不会出错.为什么它在游乐场有效?有任何想法吗?

typescript reactjs

12
推荐指数
2
解决办法
7545
查看次数

标签 统计

reactjs ×1

typescript ×1