节点名挂载到this上,遇到问题。求TS大佬指教

之前一直用js写代码。
为了工作方便,我把编辑器节点名直接挂载到this上,就省去了很多this.node.getComponent(xxx)这种操作;
现在转TS写,用这种方法遇到问题,因为TS语法机制,好像必须提前申明好全部的变量。如果按照下面的写法this.xxx语法检测报错,是找不到的。(实际运行是没有问题的)有没有大佬能告知小弟,如何临时在类里面申明实例变量?只要能语法检测不报错就行。

之前js写法如下
let arrChildren = node.children;
for (let k = 0; k < arrChildren.length; ++k) {
let node = arrChildren[k];
this[node.name] = node;//将节点挂载到this //可以随时随地申明变量
}

ts写法
let arrChildren = node.children;
for (let k = 0; k < arrChildren.length; ++k) {
let node = arrChildren[k];
this[node.name] = node;//将节点挂载到this(这一步TS如何处理?)
}
如果不提前申明如:bg:cc.ndoe = null;
this.bg直接报不存在的属性,实际上是能用的

为了【只要能语法检测不报错就行】其实这样就可以啊:this[node.name] = node;但是根据node.name访问该节点时就体现不出ts优势(友好的编码提示),完全就跟js编码一致了。

那有什么好的解决方案吗?萌新刚接触TS

没有好的解决方案,如果从TS的角度,那就建议能定义数据类型的都定义好类型吧,像类的属性、函数参数、返回值啥的也指定好类型(数据类型or组件类型),另外面向对象编程的思想也可以尽情的使用起来(像使用强类型语言编程一样);只要习惯了,编码提示、脚本跳转等是很爽的

this[“node_name”]这样就不报错了,但这样就失去了原本使用typescript的意义,所以不推荐这种写法。
可以@property(MyComponent)挂载某节点的常用组件,this.myComponet去使用组件,使用节点时再this.myComponent.node。不管日后维护改成什么节点名称都不需要修改代码

题名应该改为:我想用在TS类里创建无法追踪的“变量名”属性,怎么办?
建议是:其实TS是为了杜绝这类JS弱类型写法会产生的各种无法协作、充满未知、找不到变量之类的问题而生的。

Class 虽然在底层实质上是一个Object,但是在设计上已经不是一个Object了。

let arrChildren = node.children;
for (let k = 0; k < arrChildren.length; ++k) {
let node = arrChildren[k];
(this as any)[node.name] = node;//将节点挂载到this(这一步TS如何处理?)
}