我正在使用Typescript 2.1.我有一个带有2个数字集合的状态的React组件,我不想复制addItem和removeItem方法,并希望它们是通用的.这是代码:
type Collection = 'challenges' | 'disciplines';
type State = {
lang: string;
challenges: number[];
disciplines: number[];
}
class MyComponent extends React.Component<{}, State> {
addItem = (collection: Collection, id: number) => {
this.setState({
[collection]: [...this.state[collection], id],
});
}
removeItem = (collection: Collection, id: number) => {
this.setState({
[collection]: this.state[collection].filter(anId => anId !== id)
});
}
...
}
这就是我调用方法的方式:
this.addItem('disciplines', id)
现在在addItem方法中我得到编译错误:
Argument of type ‘{ [x: string]: number[]; }’ is not assignable to
parameter of type ‘Pick< State, “lang” | “disciplines”
| “challenges”>’.Property ‘lang’ is missing in type ‘{ [x: string]:
number[]; }’.
有没有办法正确输入这个?谢谢!
最佳答案 它似乎是TypeScript编译器中的一个错误,因此我们必须等待修复.
跟踪问题是here.