《编程与类型系统》读书笔记(一)

216 阅读2分钟

以下是「第2章 基本类型」的读书笔记。

关键词:空类型 数值类型陷阱 编码文本

空类型 never

这种类型称为不可赋值类型或空类型,因为我们无法创建它的实例。

我们使用空类型来表示不可能,例如将其用作从不会返回得函数(抛出异常或无限循环得函数)的返回类型。

大多数编程语言使用void来表示不存在有意义的值,但将上面那样的函数声明返回void存在误导性。这些函数不是不返回有意义的值,而是根本不返回。

自制空类型

TS提供never作为空类型,但并不是所有主流语言都提供了内置的空类型

要实现一个空类型,你可以定义一个枚举,但不在其中定义任何元素;或者定义一个结构,使其只有一个私有构造函数,这样一来,它将不会被调用。

image.png

单元类型

单元类型是只有一个可能值得类型。对于这种类型的变量,检查其值是没有意义的,它只有是那一个值。当函数的结果没有意义时,我们会使用单元类型。

数值类型的常用陷阱

为什么0.10相加3次的结果不是0.30?

为了理解这一点,需要了解计算机如何表示数值类型。数值类型的两个关键特征是其宽度编码

宽度是指用来表示一个值的位数。位数可以从8位(1个字节)甚至一直到64位或更多。 对于编码给定宽度的数字,有3种常见的方法:无符号二进制、二进制补码以及IEEE 754。