typescript - 如何解决 TypeScript 中 Object is possible is 'null'.ts(2531) 错误?
问题描述
我已经看到如何抑制“错误 TS2533:对象可能是‘空’或‘未定义’”?. 和其他东西。这不是重复的!
有 3 种不同的方法可以抑制此错误。我不想要什么。我也不想禁用严格的空类型。我想要一个适当的解决方案来正确编码。
HTMLElement
我可以创建一个与null相同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 的新手,但这是最烦人的事情。我希望有一个我还没有找到的解决方案。
解决方案
推荐阅读
- android - 如何检查元素android应用程序?
- django-models - 为什么我会收到类似 Reverse for 'add_cart' with arguments '('',)' not found 的错误
- python - python中带有日期时间库的if语句
- reactjs - 创建项目构建时 React 的导入文件如何工作
- vue.js - Vue3 js 中的 2 个 css 文件(阿拉伯文和英文 css 文件)之间如何切换?
- kotlin - Kotlin:将由括号分隔的对列表解析为 Pairs() 列表
- c# - 如何在遗留类中使用 DI 容器来创建新类的实例
- javascript - 在 URL 中设置字符串(Reactjs)
- visual-studio-code - 使用带有 Visual Studio 代码断点的函数框架 python 进行调试
- spring-boot - 使用 Java Faker 引发依赖错误的 Spring Boot