Typescript未检测到空检查并抱怨参数不可分配

Typescript未检测到空检查并抱怨参数不可分配,typescript,null,Typescript,Null,所以我有一个函数,它需要一个不可为null的类型。在调用函数之前,我检查输入参数是否不为null,但typescript显然无法理解这一点,并抱怨说: “HermiteOctreeNode | undefined”类型的参数不能分配给“HermiteOctreeNode”类型的参数 类型“undefined”不可分配给类型“HermiteOctreeNode” if(node.nodeType!==node\u-TYPE\u-LEAF&&node.nodeType!==node\u-TYPE\u

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

“HermiteOctreeNode | undefined”类型的参数不能分配给“HermiteOctreeNode”类型的参数

类型“undefined”不可分配给类型“HermiteOctreeNode”

if(node.nodeType!==node\u-TYPE\u-LEAF&&node.nodeType!==node\u-TYPE\u-PSEUDO){
for(设i=0;i
如果您完全确定运算符不为空,则可以使用(
):


关于此问题,有关于此运算符的更多信息:

作为另一种解决方案,您可以将数组值存储在变量中,它将解决您的问题:

const child = node.children[i];

if (child != null) {
  rebuildOctreeNode(node, child, i);
}
if (node.children[i] !== null) {
    rebuildOctreeNode(node, node.children[i]!, i);
}
const child = node.children[i];

if (child != null) {
  rebuildOctreeNode(node, child, i);
}