打字稿未检测到无效的检查和抱怨无法分配的参数



因此,我的功能需要某些不可撤销的类型。在调用该函数之前,我检查输入参数是否不是null,但显然是Typescript无法理解的,并抱怨说:

类型'Hermiteoctreenode的参数|未定义的"不能分配给" Hermiteoctreenode"类型的参数。

键入'undedined'不适合输入'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);
  }
}

如果您绝对确定操作员不是null,则可以使用非零断言操作员(!(:

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

在此问题上,还有有关此操作员的更多信息:在打字稿中,什么是!(感叹号/BANG(运算符时,在删除会员时?

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

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

相关内容

  • 没有找到相关文章