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

23|增强编译器前端功能第2步:增强类型体系

你好,我是宫文学。
你可能也注意到了,我们在第二部分的主要任务,是要让 PlayScript 扩展到支持更多的类型。在这个任务中,对类型的处理能力就是一个很重要的功能。
其实在第一部分,我们已经实现了一定的类型处理功能,包括类型检查、类型自动推断等,但其实还有更多的类型处理能力需要支持。
对于一门语言来说,类型系统是它的核心。语言之间的差别很多时候都体现在类型系统的设计上,程序员们通常也会对类型处理的内部机制很感兴趣。而 TypeScript 比 JavaScript 语言增强的部分,恰恰就是一个强大而又灵活的类型系统,所以我们就更有必要讨论一下与类型有关的话题了。
那么通过今天这节课,我们就来增强一下 PlayScript 的类型处理能力,在这过程中,我们也能学习到更多与类型系统有关的知识点,特别是能对类型计算的数学实质有所认知。
首先,我们来看看 TypeScript 的类型系统有什么特点。

TypeScript 的类型系统

从 TypeScript 的名字上,你就可以看出来,这门语言在类型系统的设计上,一定是下了功夫的。也确实是这样,TypeScript 在设计之初,就想弥补 JavaScript 弱类型、动态类型所带来的缺点。特别是,当程序规模变大的时候,弱类型、动态类型很容易不经意地引入一些错误,而且还比较难以发现。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《手把手带你写一门编程语言》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(4)

  • 最新
  • 精选
  • ifelse
    学习打卡
    归属地:浙江
  • qinsi
    TypeScript的union type就是Haskell ADT里的sum type,不过是untagged,所以在判断类型上有诸多不便。TypeScript也可以定义product type: ```typescript type pair = [string, number] ``` 因为TypeScript支持值类型,又因为TypeScript的类型系统是图灵完整的,所以可以像C++的模版元编程一样,做出一些“滥用”的行为,比如你甚至可以让编译器帮你解析html: https://github.com/g-plane/type-gymnastics/blob/master/src/spec-compliant-html-parser/index.ts
  • 奋斗的蜗牛
    赞,类型系统的实现一直看不太明白,是个难点
  • quanee
    老师, 我们写的语言最后能自举吗?
    1
收起评论
显示
设置
留言
4
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部