打字稿不检测空检查和抱怨参数不可分配

Luc*_*gon 2 null typescript

所以我有一个需要某种非可空类型的函数.在调用函数之前,我检查输入参数是否不为null,但显然,typescript无法理解并且抱怨说:

'HermiteOctreeNode |类型的参数 undefined'不能赋值给'HermiteOctreeNode'类型的参数.

类型'undefined'不能分配给'HermiteOctreeNode'类型.

if (node.nodeType !== NODE_TYPE_LEAF && node.nodeType !== NODE_TYPE_PSEUDO) {
for (let i = 0; i < node.children.length; i++) {
  if (node.children[i] != null) {
    rebuildOctreeNode(node, /* node.children[i]  HERE /*, i);
  }
}
Run Code Online (Sandbox Code Playgroud)

rin*_*t.6 5

如果您完全确定运算符不为null,则可以使用非null断言运算符(!):

if (node.children[i] !== null) {
    rebuildOctreeNode(node, node.children[i]!, i);
}
Run Code Online (Sandbox Code Playgroud)

在这个问题上有关于这个运算符的更多信息:在Typescript中,什么是!解除引用会员时(感叹号/爆炸)运营商?