手把手带你写一门编程语言
宫文学
北京原点代码 CEO
7235 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 49 讲
起步篇:让一门超简单的语言跑起来 (21讲)
结束语 (1讲)
手把手带你写一门编程语言
15
15
1.0x
00:00/00:00
登录|注册

24|增强编译器前端功能第3步:全面的集合运算

你好,我是宫文学。
在上一节课,我们扩展了我们语言的类型体系,还测试了几个简单的例子。从中,我们已经能体会出一些 TypeScript 类型体系的特点了。
不过,TypeScript 的类型体系其实比我们前面测试的还要强大得多,能够在多种场景下进行复杂的类型处理。
今天这节课,我们会通过多个实际的例子,来探索 TypeScript 的类型处理能力。并且,在这个过程中,你还会进一步印证我们上一节课的一个知识点,就是类型计算实际上就是集合运算。在我们今天的这些例子中,你会见到多种集合运算,包括子集判断、重叠判断,以及交集、并集和补集的计算。
首先,让我们看几个例子,来理解一下类型计算的使用场景。

类型计算的场景

我们先看第一个例子:
function foo1(age : number|null){
let age1 : string|number;
age1 = age; //编译器在这里会检查出错误。
console.log(age1);
}
在这个例子中,我们用到了 age 和 age1 两个变量,它们都采用了联合类型。一个是 number|null,一个是 string|number。
如果你用–strict 选项来编译这个程序,那么 tsc 会报错:
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《手把手带你写一门编程语言》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(3)

  • 最新
  • 精选
  • ifelse
    学习打卡
    归属地:浙江
  • blackonion
    rust也可以,例如let mut maybe_some = None;maybe_some = Some(666) 编译器可以算出maybe_some的类型是Option<i32>。
  • 奋斗的蜗牛
    之前看typescript编译器的类型检验代码,看得很晕,里面的类型推导是真复杂,谢谢老师讲到这块
收起评论
显示
设置
留言
3
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部