Typescript не обнаруживает нулевую проверку и жалуется на аргумент, который не может быть назначен - PullRequest
0 голосов
/ 26 апреля 2018

Итак, у меня есть функция, которая требует определенного не обнуляемого типа.Перед вызовом функции я проверяю, является ли входной параметр не нулевым, но, очевидно, машинопись не может этого понять и жалуется, говоря:

Аргумент типа '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);
  }
}

Ответы [ 2 ]

0 голосов
/ 26 апреля 2018

В качестве другого решения вы можете сохранить значение массива в переменной, и это решит ваши проблемы:

const child = node.children[i];

if (child != null) {
  rebuildOctreeNode(node, child, i);
}
0 голосов
/ 26 апреля 2018

Если вы абсолютно уверены, что оператор не равен нулю, вы можете использовать оператор ненулевого подтверждения (!):

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

Более подробная информация об этомоператор на этот вопрос: В Typescript, что это такое!(восклицательный знак / удар) оператор при разыменовании члена?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...