⚡ 编程实验室🏗️ HTML🎨 CSS⚡ JavaScript🐍 Python🗄️ SQL☕ Java⚛️ React💚 Vue🟢 Node.js⚙️ C语言🐘 PHP🐹 Go🔷 TypeScript🐬 MySQL🔧 C++🎯 C#🦀 Rust🅱️ Bootstrap💡 jQuery🎸 Django🍃 MongoDB👗 Sass🎪 Kotlin📊 R语言📋 XML📊 Excel🐘 PostgreSQL🐳 Docker🅰️ Angular🎮 游戏🏠 网站首页

断言函数与类型谓词的组合精炼

通过自定义类型谓词与断言函数构建可组合的类型细化链。 · 难度:入门 · +10XP

断言函数与类型谓词的组合精炼

TypeScript 3.7 引入的断言函数(asserts)和类型谓词(is)可以组合使用,创建强大的类型细化管道。本教程将演示如何编写一个“断言链”:先断言一个值非空,再断言它是特定类型,最后断言它满足某个条件。通过返回 never 或使用 assert 修饰符,让类型系统逐层收窄类型。我们还将学习如何利用断言函数实现类似“检查一个对象包含所有必要键”的编译时验证。

function assertNonNull(value: T): asserts value is NonNullable {
  if (value === null || value === undefined) {
    throw new Error('值不能为空')
  }
}

function assertString(value: unknown): asserts value is string { if (typeof value !== 'string') { throw new Error('不是字符串') } }

function process(data: unknown) { assertNonNull(data) assertString(data) // 此时 data 的类型为 string console.log(data.toUpperCase()) }

Ctrl+Enter
🚀 升级VIP
解锁全部课程+AI助手

🏆 学习排行

加载中...

📊 统计

📖 200 篇
0 完成
🔥 0