以下是「第2章 基本类型」的读书笔记。
关键词:空类型 数值类型陷阱 编码文本
空类型 never
这种类型称为不可赋值类型或空类型,因为我们无法创建它的实例。
我们使用空类型来表示不可能,例如将其用作从不会返回得函数(抛出异常或无限循环得函数)的返回类型。
大多数编程语言使用void来表示不存在有意义的值,但将上面那样的函数声明返回void存在误导性。这些函数不是不返回有意义的值,而是根本不返回。
自制空类型
TS提供never作为空类型,但并不是所有主流语言都提供了内置的空类型
要实现一个空类型,你可以定义一个枚举,但不在其中定义任何元素;或者定义一个结构,使其只有一个私有构造函数,这样一来,它将不会被调用。
单元类型
单元类型是只有一个可能值得类型。对于这种类型的变量,检查其值是没有意义的,它只有是那一个值。当函数的结果没有意义时,我们会使用单元类型。
数值类型的常用陷阱
为什么0.10相加3次的结果不是0.30?
为了理解这一点,需要了解计算机如何表示数值类型。数值类型的两个关键特征是其宽度和编码。
宽度是指用来表示一个值的位数。位数可以从8位(1个字节)甚至一直到64位或更多。
对于编码给定宽度的数字,有3种常见的方法:无符号二进制、二进制补码以及IEEE 754。