求教源码中的两个问题

在幽灵射手源码中看到这个:

  1. private _persistRootNode: Node = null!;
  2. director.getScene()!.addChild(this._persistRootNode);

请问:

  1. 1中应该等价于private _persistRootNode: Node | null = null; 但是这个有什么意义呢?直接赋值为Node类的不可以吗?例如private _persistRootNode: Node = null;这样子。

  2. 请问2中director.getScene()!的“!”是什么意义呢?

这算是TS语法基础部分了

1赞

基础知识

  1. 属于TS的严格模式,null是一种类型,Node != null,类似语言有kotlin
private a : String? = null;

对于TS你可以这样

private _a : String | null = null;
  1. !的意思是director.getScene() 程序员认为一定不是null,如果是null,属于bug,执行器执行到此,爱咋地就咋地,对应上面说到的,上面的在ts中也可以修改为
private _persistRootNode : Node = null!;

此时,编译器认为_persistRootNode一定会初始化一个值,且不为null~

1赞