我正在尋找一種方法,通過類型檢查來獲取對象屬性名稱,以便在重構後捕獲可能的迴歸。在TypeScript中提取屬性名稱的安全方法
下面是一個示例:我必須將屬性名稱作爲字符串傳遞的組件,如果我嘗試更改模型中的屬性名稱,它將被破壞。
interface User {
name: string;
email: string;
}
class View extends React.Component<any, User> {
constructor() {
super();
this.state = { name: "name", email: "email" };
}
private onChange = (e: React.FormEvent) => {
let target = e.target as HTMLInputElement;
this.state[target.id] = target.value;
this.setState(this.state);
}
public render() {
return (
<form>
<input
id={"name"}
value={this.state.name}
onChange={this.onChange}/>
<input
id={"email"}
value={this.state.email}
onChange={this.onChange}/>
<input type="submit" value="Send" />
</form>
);
}
}
我很感激,如果有什麼好的解決方案來解決這個問題。
目前在GitHub上的一些建議與此幫助(參見[#1579](https://github.com/Microsoft/TypeScript/issues/1579),[#394](HTTPS: //github.com/Microsoft/TypeScript/issues/394)和[#1003](https://github.com/Microsoft/TypeScript/issues/1003))。您可以查看[this](http://stackoverflow.com/a/32542368/188246),但要注意,代碼縮小後可能無法使用。 –
@DavidSherret你的'這個'解決方案是我能想出的唯一答案。請作爲回答 – basarat
@basarat會做,謝謝!對於a => a, –