我正在开发我的 react 应用程序,几周以来我一直在使用 typeScript,但有时我仍然遇到一些问题来键入一些变量。
这是错误消息:
TypeScript error in /Users/SignUpFields.tsx(66,9):
Element implicitly has an 'any' type because expression of type 'string' can't be used to
index type '{ first_name: string; last_name: string; email: string; phone_number: string;
address: string; adeli: string; password: string; passwordConfirmation: string; }'.
No index signature with a parameter of type 'string' was found on type '{ first_name:
string; last_name: string; email: string; phone_number: string; address: string; adeli:
string; password: string; passwordConfirmation: string; }'. TS7053
界面 :
interface IUserData {
first_name: string;
last_name: string;
email: string;
phone_number: string;
address: string;
adeli: string;
password: string;
passwordConfirmation: string;
}
我的功能:
handleChanges = (key: string) => (
event: React.FormEvent<HTMLInputElement>
) => {
let { userData } = this.state;
let obj: ISignUpFieldsState = this.state;
for (const k of Object.keys(userData)) {
if (k ===key){
console.log('k', k , key);
userData[k] = event.currentTarget.value;
this.setState({ userData }, () => this.props.handleChangeFields(obj));
}
}
};
有件事!我想用键值修改我的状态以保持其通用性,并同时保持与每个道具(first_name,...)的接口具有非常精确的东西。我看到了这样的东西:[key: string]: string;但我真的不喜欢它,因为你从 obj 中“松开”了你的道具,它看起来像“任何”类型......
谢谢,祝你有美好的一天!