我见过How to suppress "error TS2533: Object is possibly 'null' or 'undefined'"?。和其他东西。这不是重复的内容!
有3种不同的方法抑制此错误。我不要我也不想禁用严格的null类型。我想要一个适当的解决方案来对此进行正确编码。
我是否可以创建一个与HTMLElement
和Element
相同的新类型,而没有null?如果它们实际上为空,那么在运行时会发生什么,我只是在TS中禁止显示警告。感觉就像是一个可怕的解决方法。
function insertAfter( newNode: HTMLElement, referenceNode: Element ) : void {
referenceNode.parentNode.insertBefore( newNode, referenceNode.nextSibling );
}
这不起作用。 TS linter不够聪明,无法检测到这一点:
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的新手,但这是最令人讨厌的事情。我希望有一个我还没有找到的解决方案。
答案 0 :(得分:0)