नवीनतम @types/react
(v15.0.6
) के साथ
प्रकार उठाओ
गतिशील/गणना की कुंजीsetState
, अर्थात्
Pick<S, K>
के लिए टाइपप्रति 2.1 में अतिरिक्त सुविधाओं का उपयोग करें। जो अच्छी बात है, क्योंकि अब टाइपिंग सही हैं, क्योंकि अद्यतन टाइपिंग से पहले "पता नहीं था"
setState
इसे बदलने के बजाय
this.state
विलय कर रहा है।
इसके अलावा, Pick
का उपयोग setState
फ़ंक्शन को अनुमति इनपुट के मामले में बहुत सख्त बनाता है। यह अब state
कि घटक परिभाषा (React.Component
के दूसरे सामान्य में परिभाषित नहीं कर रहे हैं करने के लिए गुण जोड़ने के लिए संभव है
लेकिन यह भी एक गतिशील अद्यतन हैंडलर परिभाषित करना कठिन है उदाहरण के लिए:।।
import * as React from 'react';
interface Person {
name: string;
age: number|undefined;
}
export default class PersonComponent extends React.Component<void, Person> {
constructor(props:any) {
super(props);
this.state = {
name: '',
age: undefined
};
this.handleUpdate = this.handleUpdate.bind(this);
}
handleUpdate (e:React.SyntheticEvent<HTMLInputElement>) {
const key = e.currentTarget.name as keyof Person;
const value = e.currentTarget.value;
this.setState({ [key]: value });
}
render() {
return (
<form>
<input type="text" name="name" value={this.state.name} onChange={this.handleUpdate} />
<input type="text" name="age" value={this.state.age} onChange={this.handleUpdate} />
</form>
);
}
}
setState
समारोह निम्न त्रुटि
[ts] Argument of type '{ [x: string]: string; }' is not assignable
to parameter of type 'Pick<Person, "name" | "age">'.
Property 'name' is missing in type '{ [x: string]: string; }'.
भले ही key
के प्रकार "name" | "age"
है फेंक देते हैं।
मैं इस के लिए एक समाधान है, एक अलग updateName
और updateAge
समारोह होने के अलावा अन्य नहीं मिल रहा। क्या किसी को गतिशील कुंजी मानों के साथ Pick
का उपयोग करने का तरीका पता है?