cocos creator 3.x中组件类型声明的时候必须带上类型
cocos creator 很久以前用过,大概在 2018年吧,那个时候是1.x版本。后来在公司的项目使用的技术一直是cocos2dx lua 3.x版本。近来公司有一个源代码,版本是2.4.4版本的,因为后续要用到3d方面的功能。因为升级为v3.x版本。本以为没啥问题,谁知道一个想问阻碍了好长时间。
在cocos creator2.x版本的时候,声明一个属性用typescript的写法如下:
@property
public nodeloading:Node
这样 nodeloading 在界面中是可以拖拽一个元素上去的,只要他是Node类型即可,或者不拖拽,默认为空值(null)。
上述写法在3.x中总是会爆红。因为cocos creator v3.x版本中typescript使用了严格类型限制。如果还这么写,在界面上会出现 Type(UnKnown),什么元素都拖不进去的问题。
解决办法 这么写就行了
@property(Node)
public nodeloading: Node;
但是这样的写法,还是会爆红,nodeloading 爆红,出现类型错误。因为nodeloading在声明的时候没有赋值。
解决办法1:使用断言 写法如下
@property(Node)
public nodeloading!:Node //多了一个叹号。告诉编译器,这个类型不用判定了。程序员可以保证他是正确的。
解决办法2:使用联合类型
@property(Node)
public nodeloading:Node|null = null;
这样写就没有任何问题了。
很赞哦! (0)