【发布时间】:2015-03-06 16:47:15
【问题描述】:
我有一个关于 typescript 属性的问题:是否可以获取 typescript 属性的 setter 和 getter 或将函数参数声明为 X 类型的属性?
原因是为了获得对变量的某种“引用”,这在普通 JS 中是不可能的,除非编写 getter/setter 包装器或通过父对象本身(obj[“varname”])访问变量。
例如(一些工作代码和其他部分推测):
//A sample class with a property
class DataClass<T> {
private T val;
public get value(): T {
return this.val;
}
public set value(value: T) {
this.val = value;
}
}
//Different ways of modifing a member "by reference"
class ModifyRef {
public static void DoSomethingByGetterAndSetter(getter: () => string, setter: (val: string) => void) {
var oldValue = getter();
setter("new value by DoSomethingByGetterAndSetter");
}
public static void DoSomethingByObject(obj: Object, name: string) {
var oldValue = obj[name];
obj[name] = "new value by DoSomethingByObject";
}
//Is something like this possible?
public static void DoSomethingByProperty(somePropery: property<string>) {
var oldVlaue = someProperty;
someProperty = "new value by DoSomethingByProperty";
}
}
var inst = new DataClass<string>();
//Calling the DoSomethingByProperty if possible
ModifyRef.DoSomethingByProperty(inst.value);
//Or if not is something like this possible
ModifyRef.DoSomethingByGetterAndSetter(inst.value.get, inst.value.set);
【问题讨论】:
标签: properties typescript