Ich bin auf der Suche nach einer Möglichkeit, einen Objekteigenschaftennamen mit Typchecking zu erhalten, der nach dem Refactoring mögliche Regressionen abfangen kann.Sicherer Weg zum Extrahieren von Eigenschaftsnamen in TypeScript
Hier ist ein Beispiel: Die Komponente, wo ich die Eigenschaftsnamen als Zeichenfolgen übergeben muss, und es wird gebrochen, wenn ich versuche, die Eigenschaftsnamen im Modell zu ändern.
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>
);
}
}
Ich würde mich freuen, wenn es eine nette Lösung zur Lösung dieses Problems gibt.
Es gibt derzeit einige Vorschläge auf Github mit diesem zu helfen (siehe [# 1579] (https://github.com/Microsoft/TypeScript/issues/1579) [# 394] (https: //github.com/Microsoft/TypeScript/issues/394) und [# 1003] (https://github.com/Microsoft/TypeScript/issues/1003)). Sie können [this] (http://stackoverflow.com/a/32542368/188246) auschecken, aber Vorsicht, es funktioniert möglicherweise nicht, sobald der Code minimiert wurde. –
@DavidSherret Ihre 'This' Lösung ist die einzige Antwort, die ich auch finden kann. Bitte als Antwort senden – basarat
@basarat wird tun, danke! –