求助,在不改动引擎代码的情况下,怎么给Node添加属性?

例如我想给Node类添加一个[key: string]: Node的属性,在vscode编辑器下不提示错误,后续可智能提示

this.node["key"] = node;


不行

image

你的key在哪里定义的?你的key按下F12能智能跳转?

不可能自动跳转的,自动跳转,需要你映射.d.ts

大佬,指导一下

3.0的话,你这样image

我需要的是一个Node属性,后续通过node.Items.xxx调用

image

我只能说是你那边自己得问题好吧 这个智能报错可以无视得

不是的,是3.0的严格模式导致的报错

image
现在语法严格,不能随意写(虽然不会出错),同时不能智能提示,这样的代码看起来“警告”“错误”多,看不下去

如果你又想智能提示,又不想报错的话,我建议你修改cc.d.ts

这样你就能达成你的目的了:image

我的问题内容有提到不改源码

你改了别人也要改,有没有不改源码的解决方案

这个不是改源码,这个是改的.d.ts,他跟源码的区别在于,.d.ts是用来方便编辑代码的,源码是实际游戏运行中运行的代码。

如果你不想改公共脚本,又想要智能提示,又不想报错,除了引擎方给你把这个字段加到.d.ts中,否则无解。


这个文件在。。。目录下

你要清楚智能提示是.d.ts中声明的字段才拥有的。

image
这样处理以后就可以了,智能提示有了,报错没了

其实就是找到对应class所在的module然后利用typescript的声明合并补充原先的声明,如果遇到要自定义参数的可以按这个流程去查找并添加修改

1赞