Sto cercando un modo per ottenere un nome di proprietà dell'oggetto con typechecking che consente di rilevare possibili regressioni dopo il refactoring.Modo sicuro per estrarre i nomi delle proprietà in TypeScript
Ecco un esempio: il componente in cui devo passare i nomi delle proprietà come stringhe e verrà interrotto se tenterò di modificare i nomi delle proprietà nel modello.
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>
);
}
}
Apprezzerei se c'è qualche soluzione piacevole per risolvere questo problema.
Al momento non ci sono alcuni suggerimenti su GitHub per aiutare con questo (Vedi [# 1579] (https://github.com/Microsoft/TypeScript/issues/1579), [# 394] (https: //github.com/Microsoft/TypeScript/issues/394) e [# 1003] (https://github.com/Microsoft/TypeScript/issues/1003)). Puoi controllare [questo] (http://stackoverflow.com/a/32542368/188246), ma attenzione potrebbe non funzionare una volta che il codice è stato risolto. –
@DavidSherret la tua soluzione "this" è l'unica risposta che posso fornire. Si prega di inviare come risposta – basarat
@basarat lo farà, grazie! –