[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", () => { })
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 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