是否可以将函数参数类型检查为interface
的键之一:
export interface IUser {
id: string;
email: string;
password: string;
}
const updateUserProperty = (property: 'id' | 'email' | 'password') => e =>
this.setState({ [property]: e.target.value });
我希望'id' | 'email' | 'password'
不被硬编码。
以JS方式,例如。 IUser
作为对象,我可以将其转换为Object.keys(IUser).join(' | ')
答案 0 :(得分:2)
是的,你可以:
export interface IUser {
id: string;
email: string;
password: string;
}
const updateUserProperty = (property: keyof IUser) => e =>
this.setState({ [property]: e.target.value });
updateUserProperty("sdsd"); //Error
updateUserProperty("id"); //Ok
更多信息here。