Я подумываю о способах создания привязки данных в машинописном тексте без использования грязной проверки или создания геттеров и сеттеров. Я пытаюсь определить, будет ли возможно (при условии полного использования аннотаций типа) найти все места, которым определенное поле определенного класса назначено для использования статического анализа. Целью было бы генерировать вызовы функций, которые обрабатывают привязку данных за кулисами, которые удаляли бы загромождение из экземпляров при проверке и были бы лучше в среде выполнения, потому что getters/seters (как я помню) сложнее оптимизировать 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);
Я почти уверен, что я могу понять, как найти все назначения в случаях x
собственности VEctor3, но не знаете, как это будет работать внутри вызовов функций, как addX
где переменная экземпляра псевдоним.
Каким образом я могу подойти к этой проблеме? Предположим, у меня уже есть AST для моей программы.
Спасибо за это, но я стараюсь, чтобы избежать создания геттеров/сеттеров. Я бы очень хотел понять это во время сборки, если это возможно. – weichsem
Вы не можете получить значение настройки во время сборки. Какой у вас АСТ? Вы можете написать постпроцессор, используя API-интерфейс TypScript. В общем, у вас не будет класса объектов. 'let arr: IXProp [] = [{x: 0}, новый Vector3()]; для ключа (пусть ключ из arr) key.x = 5; ' – madreason