考虑以下简单代码:
export class TestComponent {
mobileMessage: string;
private mobileValidationMessages:ISchemeObject = {
required: "Mobile is required",
pattern: "Mobile format is not correct"
}
setMessage(controlName: string): void {
const x = <any>(controlName + "Message");
this[x] = "Something";
}
}
上面我想用我喜欢的任何参数调用 setMessage(),例如
setMessage("mobile")
并且能够更改mobileMessage
。但是,Typescript抱怨并且不允许我这样做。我怎么能实现这个目标呢?
答案 0 :(得分:2)
您可以将字符串限制为类本身的键,以使其更安全类型
export class TestComponent {
mobileMessage: string
setMessage(messageProp: keyof this): void {
this[messageProp] = 'Something'
}
example(): void {
this.setMessage('mobileMessage')
}
}
答案 1 :(得分:0)
你可以使用类似的东西:
export class TestComponent {
field: {[key: string]: string};
setValue(fieldName: string, value: string) {
this.field[fieldName] = value;
}