# 原始数据类型

JavaScript 的类型分为两种:原始数据类型(Primitive data types)和对象类型(Object types)。

原始数据类型包括:布尔值、数值、字符串、null、undefined 以及 ES6 中的新类型 Symbol 和 ES10 中的新类型 BigInt

TypeScript 支持与 JavaScript 几乎相同的数据类型,此外还提供了实用的枚举类型方便我们使用。

# 布尔值

布尔值是最基础的数据类型,在 TypeScript 中,使用 boolean 定义布尔值类型:

let loading: boolean = false;

注意

注意,使用构造函数 Boolean 创造的对象是一个Boolean对象不是布尔值

# 数字

和 JavaScript 一样,TypeScript 里的所有数字都是浮点数。 这些浮点数的类型是 number

let decLiteral: number = 6;
let hexLiteral: number = 0xf00d;
// 二进制
let binaryLiteral: number = 0b1010;
// 八进制
let octalLiteral: number = 0o744;

# 字符串

像其它语言里一样,我们使用 string 表示文本数据类型。

let name: string = "bob";

你还可以使用模版字符串,它可以定义多行文本和内嵌表达式

let pname: string = `Gene`;
let age: number = 37;
let sentence: string = `Hello, my name is ${pname}. I'll be ${age + 1} years old next month.`;
console.log(sentence);
// Hello, my name is Gene. I'll be 38 years old next month.

# 空值 (新)

JavaScript 没有空值(Void)的概念,在 TypeScript 中,可以用 void 表示没有任何返回值的函数:

function sayHello(): void {
  console.log("hello");
}

声明一个 void 类型的变量没有什么用,因为你只能将它赋值为 undefined 和 null

let unusable: void = undefined;

# null 和 undefined

在 TypeScript 中,null 和 undefined 也得到了保留

let u: undefined = undefined;
let n: null = null;

与 void 的区别是,undefined 和 null 是所有类型的子类型。也就是说 undefined 类型的变量,可以赋值给 number 类型的变量

// 这样不会报错
let num: number = undefined;

而 void 类型的变量不能赋值给 number 类型的变量

let u: void = undefined;
let num: number = u;
// Type 'void' is not assignable to type 'number'.