
## TypeScript 的基石：理解 `string`, `number` 和 `boolean`

在从 JavaScript 过渡到 TypeScript 的过程中，我们首先会遇到的核心概念就是其强大的类型系统。它为动态、灵活的 JavaScript 赋予了静态的结构与可预测性，从而在项目变得复杂时，为我们提供了一道坚实的防线。

而这一切的起点，便是我们将要深入探讨的——**基本类型**。

### 类型注解：为变量赋予契约

在介绍具体的类型之前，我们先来了解一下 TypeScript 是如何为变量附加类型信息的。这个过程被称为**类型注解**（Type Annotation）。

它的语法非常直观，就是在变量名后面使用一个冒号 (`:`)，然后跟上我们期望的类型。

```typescript
let identifier: type;
```

一旦我们为变量设置了类型注解，它就如同与 TypeScript 编译器签订了一份契约。这份契约规定了这个变量在其生命周期内，只能持有特定类型的值。如果尝试赋予它其他类型的值，编译器就会立即发出提醒，帮助我们在编码阶段就发现潜在的错误。

### 三种核心原始类型

现在，让我们来看看构成 TypeScript 类型系统的三个最基本的原始（Primitive）类型。

#### 1. `string`：文本的世界

`string` 类型用于表示文本数据。所有使用单引号 (`'`)、双引号 (`"`) 或反引号 (`` ` ``) 包裹起来的字符序列，都属于 `string` 类型。

它适用于各种场景，无论是变量、函数参数还是返回值，只要涉及文本处理，`string` 都是我们的首选。

**代码示例：**

```typescript
let blogTitle: string = "TypeScript 的基石";
let authorName: string = 'Raycast';

// 使用模板字符串
let greeting: string = `Hello, ${authorName}! Welcome to the article: "${blogTitle}".`;
```

#### 2. `number`：数字的领域

与 JavaScript 一样，TypeScript 中所有数字，无论是整数还是浮点数，都统一使用 `number` 类型来表示。它涵盖了我们日常开发中会遇到的所有数值计算场景。

**代码示例：**

```typescript
let version: number = 5.0;
let articleCount: number = 21;
let pi: number = 3.14159;
```

当我们为一个变量注解了 `number` 类型后，如果尝试将一个字符串（即使内容是数字）赋值给它，TypeScript 同样会阻止这一行为。

```typescript
let followers: number;
followers = 100;    // 正确
// followers = '100k'; // 错误：不能将类型“string”分配给类型“number”。
```
这种机制有效地避免了在运行时可能因类型不匹配而导致的计算错误。

#### 3. `boolean`：是非的判断

`boolean` 类型是三个基本类型中最简单的一个，它只有两个可能的值：`true` 和 `false`。

它在编程中主要承担逻辑判断的职责，是控制程序流程（如 `if` 语句）和表示状态（如 `isLoading`, `isEnabled`）的核心。

**代码示例：**

```typescript
let isPublished: boolean = true;
let hasComments: boolean = false;

if (isPublished) {
    console.log("This article is live.");
} else {
    console.log("This is a draft.");
}
```

### 结语

掌握 `string`、`number` 和 `boolean` 这三种基本类型，并学会如何通过类型注解将它们应用到变量上，是我们迈入 TypeScript 世界的第一步，也是最坚实的一步。

它们看似简单，却是构建所有更复杂类型（如数组、对象、元组等）的基石。在后续的探索中我们会发现，正是这些明确的、静态的类型定义，构成了 TypeScript 强大生产力的源泉。

