[Typescript] Perform null Checks with Assertion Functions

In this lesson, we're going to look at how to perform null checks with assertion functions. We're going to assert that a nullable value doesn't hold the value null. In the process, we're going to learn how assertion functions integrate with TypeScript's control flow analysis.

const root = document.getElementById("root")

`root` can be `HTMLElement` or `null` type.

root.addEventListener("click", () => {
    
})

It reports `root` is possible to be null

 

It is possible to supress the error by using assert not null operator `!`

const root = document.getElementById("root")!

 

But it is still possible has runtime error.

We can use if check:

const root = document.getElementById("root")
if (root === null) {
    throw Error(`cannot find #root element`)
}
root.addEventListener("click", () => {

})

 

Better, we can use assertion:

复制代码
function assertIsNonNullish<T>(
    value: T,
    message: string
): asserts value is NonNullable<T> {
    if (value === null || value === undefined) {
        throw Error(message);
    }
}

const root = document.getElementById("root")
assertIsNonNullish(root, "Cannot find #root element")
root.addEventListener("click", () => {

})
复制代码

 

posted @   Zhentiw  阅读(43)  评论(0编辑  收藏  举报
编辑推荐:
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
历史上的今天:
2020-05-02 [React Testing] Error State with React Testing Library, findBy*
2020-05-02 [React Testing] Use Generated Data in Tests with tests-data-bot to Improve Test Maintainability
2020-05-02 [React Testing] Test Drive Assertions with Dates in React
2020-05-02 [React Testing] Test Drive Mocking react-router’s Redirect Component on a Form Submission
2019-05-02 [Vuex] Add options to a Vuex plugin using TypeScript
2019-05-02 [Vuex] Write a Vuex Plugin using TypeScript
2018-05-02 [React] Refactor componentWillReceiveProps() to getDerivedStateFromProps() in React 16.3
点击右上角即可分享
微信分享提示