【发布时间】:2016-11-16 19:53:44
【问题描述】:
我正在考虑在 Typescript 中进行数据绑定而不使用脏检查或生成 getter 和 setter 的方法。我试图确定是否有可能(假设充分使用类型注释)使用静态分析找到某个类的某个字段分配给的所有位置。目的是生成对处理幕后数据绑定的函数的调用,这将在检查时从实例中消除混乱,并且在运行时更好,因为 getter/setter(我记得)对于 VM 来说比属性分配更难优化.
例如
export class Vector3 {
public x : number;
public y : number;
public z : number;
}
var v0 = new Vector3();
v0.x = 1;
//generate call to Databindings.set(v0, 'x', v0.x);
function addX(a : Vector3, val : number) : void {
a.x += val;
//generate call to Databindings.set(a, 'x', a.x);
}
addX(a, 10);
我几乎可以肯定,我可以弄清楚如何找到 Vector3 的 x 属性实例的所有赋值,但不确定它如何在函数调用中工作,例如 addX,其中实例变量是别名的。
有哪些方法可以解决这个问题?假设我的程序已经有了 AST。
【问题讨论】:
标签: typescript compilation cross-compiling abstract-syntax-tree preprocessor