Я видел Как подавить "ошибку TS2533: объект может быть 'null' или 'undefined'"? . И другие вещи. Это , а не дубликат!
Есть три способа, чтобы подавить эту ошибку. Я не хочу что. Я также не хочу отключать строгие нулевые типы. Я хочу правильное решение для правильного кодирования.
Могу ли я создать новый тип, такой же как HTMLElement
и Element
, только без нуля? Что произойдет во время выполнения, если они фактически равны нулю, а я просто подавляю предупреждение в TS. Это похоже на ужасный обходной путь.
function insertAfter( newNode: HTMLElement, referenceNode: Element ) : void {
referenceNode.parentNode.insertBefore( newNode, referenceNode.nextSibling );
}
Это не работает. TS Линтер не достаточно умен, чтобы обнаружить это:
function insertAfter( newNode: HTMLElement, referenceNode: Element ) : void {
if ( null === referenceNode ) {
throw Error( 'ref node is null');
}
referenceNode.parentNode.insertBefore( newNode, referenceNode.nextSibling );
}
Нашел здесь: https://rules.sonarsource.com/typescript/RSPEC-2966 тоже не работает.
function insertAfter( newNode: HTMLElement, referenceNode: Element ) : void {
if ( referenceNode ) {
referenceNode.parentNode.insertBefore( newNode, referenceNode.nextSibling );
}
throw Error( 'ref node is null');
}
Я новичок в TypeScript, но это самая раздражающая вещь. Я надеюсь, что есть решение, которое я пока не нашел.