← 编程学习中心
📖

Preparation

8 个课程
1
如何学习编程
2
计算机基础
3
键盘初识与基准键位
4
字母与数字基础
5
Shift键魔法
6
编程符号专精
7
功能键与修饰键
8
键盘学习总结与进阶
📚

Basics

22 个课程
1
什么是编程?
2
Hello World - 你的第一个程序
3
变量基础概念 - 给信息贴标签
4
变量赋值和操作 - 变量的高级用法
5
数据类型基础 - 数字和字符串
6
基础运算符 - 数字运算王国
7
布尔类型与比较运算符 - 程序的判断基础
8
条件判断基础 - 让程序学会做决定
9
变量作用域 - 变量的生存范围
10
条件语句进阶 - 复杂判断与嵌套结构
11
逻辑运算符 - 简化复杂条件判断
12
循环语句 - 程序的重复机器
13
循环进阶 - break、continue与循环控制
14
嵌套循环与作用域
15
循环调试实战技巧
16
循环不变量 - 理解循环的数学规律
17
数组基础 - 数据的收纳盒
18
数组操作方法 - 添加、删除和管理
19
数组高级 - 探索数组的强大功能
20
引用概念 - 变量的不同行为
21
函数基础 - 解决重复代码的秘密武器
22
函数实践与应用 - 巩固基础,实战应用
🚀

Intermediate

11 个课程
1
从控制台到画布 - p5.js初体验
2
图形绘制工具箱 - 基础图形函数
3
让世界多彩 - 颜色系统详解
4
文字的艺术 - 文本绘制与样式
5
球体动起来 - 动画基础入门
6
球体的交互魔法 - 鼠标与条件判断
7
面向对象编程 - Class类与实例
8
球的家族 - 循环与数组应用
9
球的个性 - 函数封装与参数化
10
球的变身 - 形状模式与高级绘制
11
球的世界 - 综合创作项目
🎯

Advanced

6 个课程
1
对象类型
2
对象类型应用
3
自定义类型
4
函数进阶 - 箭头函数与高级编程技巧
5
内置方法 - 字符串与数组的魔法工具
6
Switch语句与字符串模板 - 更优雅的代码表达
← 编程学习中心
📖

Preparation

8 个课程
1
如何学习编程
2
计算机基础
3
键盘初识与基准键位
4
字母与数字基础
5
Shift键魔法
6
编程符号专精
7
功能键与修饰键
8
键盘学习总结与进阶
📚

Basics

22 个课程
1
什么是编程?
2
Hello World - 你的第一个程序
3
变量基础概念 - 给信息贴标签
4
变量赋值和操作 - 变量的高级用法
5
数据类型基础 - 数字和字符串
6
基础运算符 - 数字运算王国
7
布尔类型与比较运算符 - 程序的判断基础
8
条件判断基础 - 让程序学会做决定
9
变量作用域 - 变量的生存范围
10
条件语句进阶 - 复杂判断与嵌套结构
11
逻辑运算符 - 简化复杂条件判断
12
循环语句 - 程序的重复机器
13
循环进阶 - break、continue与循环控制
14
嵌套循环与作用域
15
循环调试实战技巧
16
循环不变量 - 理解循环的数学规律
17
数组基础 - 数据的收纳盒
18
数组操作方法 - 添加、删除和管理
19
数组高级 - 探索数组的强大功能
20
引用概念 - 变量的不同行为
21
函数基础 - 解决重复代码的秘密武器
22
函数实践与应用 - 巩固基础,实战应用
🚀

Intermediate

11 个课程
1
从控制台到画布 - p5.js初体验
2
图形绘制工具箱 - 基础图形函数
3
让世界多彩 - 颜色系统详解
4
文字的艺术 - 文本绘制与样式
5
球体动起来 - 动画基础入门
6
球体的交互魔法 - 鼠标与条件判断
7
面向对象编程 - Class类与实例
8
球的家族 - 循环与数组应用
9
球的个性 - 函数封装与参数化
10
球的变身 - 形状模式与高级绘制
11
球的世界 - 综合创作项目
🎯

Advanced

6 个课程
1
对象类型
2
对象类型应用
3
自定义类型
4
函数进阶 - 箭头函数与高级编程技巧
5
内置方法 - 字符串与数组的魔法工具
6
Switch语句与字符串模板 - 更优雅的代码表达

数据类型基础 - 数字和字符串

在前面两节课中,我们学习了变量的基础概念和赋值操作。你可能已经注意到,有些变量存储数字(如 let score = 100),有些变量存储文字(如 let name = "小明")。

TypeScript 会自动"识别"变量应该存储什么类型的数据,而且一旦确定就不能改变。今天我们要正式学习这个概念——数据类型。

使用提示

在开始学习之前,请记住:

  1. 所有的例子代码都是可以点击运行来看结果 - 点击代码块上方的"运行"按钮
  2. 你可以修改代码来体验 - 试着修改代码,看看会发生什么
  3. 可以点击重置来恢复代码 - 如果不小心改乱了,点击"重置"按钮恢复原始代码

回顾:我们已经接触过的类型

在变量课程中,我们已经见过两种基本的数据类型:

数字类型 (number)

用于表示可以计算的数量:

加载代码编辑器...

字符串类型 (string)

用于表示文本信息,需要用双引号包围:

加载代码编辑器...

你已经知道的重要规则:

  • 数字类型变量只能存储数字
  • 字符串类型变量只能存储用双引号包围的文本
  • 变量的类型一旦确定,就不能改变

两种基本数据类型详解

现在让我们正式、系统地学习这两种基本数据类型。

数字类型 (number) - 游戏的数值系统

数字类型用来表示所有可以用于数学计算的数量:

数字的特点:

  • 用于表示数量、等级、分数、血量等数值信息
  • 可以是正数、负数或小数
  • 不需要用引号包围(这是与字符串的重要区别)
  • 可以进行数学运算(加减乘除等)
加载代码编辑器...

字符串类型 (string) - 游戏的文字系统

字符串类型用来表示所有文本信息:

字符串的特点:

  • 必须用双引号 " 包围(这是与数字的重要区别)
  • 用于表示文本、名称、描述等信息
  • 游戏中的名字、职业、武器、对话等都用字符串表示
  • 不能直接进行数学运算
加载代码编辑器...

为什么需要区分数据类型?

你可能会问:为什么要把数字和字符串分开?让我们用一个游戏场景来理解:

想象一下游戏中的角色属性:

  • 数字属性:等级(5)、分数(100) - 这些可以计算
  • 文字属性:名字("勇者") - 这些用于显示

类型的作用:

  1. 防止错误:确保你不会把文字当作分数来计算
  2. 明确用途:一看就知道这个变量是用来做什么的
  3. 提高效率:计算机知道如何正确处理不同类型的数据

就像你不会把计算器放进文具盒,也不会把铅笔放进计算器盒一样,TypeScript 通过类型系统确保每种数据都有合适的"容器"。

TypeScript 的类型推断

现在你已经学习了数字和字符串两种基本数据类型,让我们深入了解 TypeScript 是如何智能识别和管理这些类型的。

什么是类型推断?

TypeScript 有一个智能的类型推断系统,能够自动识别变量存储的数据类型:

  • 当变量存储数字时,TypeScript 知道这是 number 类型
  • 当变量存储字符串时,TypeScript 知道这是 string 类型

这个识别过程是在变量创建时自动完成的,你不需要做任何额外操作!

💡 简单理解:TypeScript 就像一个智能的储物盒管理员,看到你放数字进去,就标记为"数字储物盒";看到你放文字进去,就标记为"文字储物盒"。

自动类型推断的实际例子

核心规则:右边值的类型决定左边变量的类型

当我们创建变量时,TypeScript 会看右边(= 右边)的值是什么类型,然后给左边(= 左边)的变量确定相同的类型:

加载代码编辑器...

TypeScript 的工作方式

当我们写这样的代码时:

加载代码编辑器...

TypeScript 在幕后会:

  1. 观察你赋给变量的值
  2. 确定这个值的类型(数字还是字符串)
  3. 记住这个变量的类型,以后只能存储相同类型的数据

这就是为什么我们在前面的课程中可以正常使用变量,而没有遇到类型问题 - TypeScript 一直在幕后自动帮助我们识别类型!

类型一旦确定就不能改变

这是 TypeScript 的一个重要规则:

加载代码编辑器...

💡 记忆技巧:把 TypeScript 想象成一个严格的储物盒管理员,一旦你把数字放进"数字储物盒",以后就只能放数字,不能放文字!

为什么需要这个规则?

这个严格的类型规则有很多好处:

  1. 防止错误:确保你不会不小心把文字当作数字来计算
  2. 代码清晰:一看就知道每个变量用来存储什么类型的数据
  3. 提前发现错误:在代码运行前就能发现类型问题

这就是 TypeScript 的"类型安全"特性,它让我们的程序更加可靠!

手动指定类型

除了让 TypeScript 自动识别类型外,我们也可以手动指定变量的类型。

类型名称

TypeScript 中两个基本类型的名称是:

  • string - 字符串类型
  • number - 数字类型

手动指定类型

手动指定类型的方式很简单:在变量名后面加上冒号 :,然后写上类型名称:

加载代码编辑器...

手动指定类型的详细结构

让我们深入理解 let 变量名: 类型名 = 值; 这个结构的每个部分:

  1. let - 变量声明关键字

    • 告诉 TypeScript:"我要创建一个新变量"
    • 这是所有变量声明的开始
  2. 变量名 - 变量的标识符

    • 给变量起一个有意义的名字
    • 例如:name, level, score
    • 变量名要符合命名规则(只能包含字母、数字、下划线,不能以数字开头)
  3. : - 类型分隔符

    • 这是手动指定类型的关键符号
    • 告诉 TypeScript:"接下来我要指定这个变量的类型"
    • 这个冒号把变量名和类型名分开
  4. 类型名 - 数据类型名称

    • 指定变量存储什么类型的数据
    • string - 字符串类型,存储文本信息
    • number - 数字类型,存储数值数据
  5. = - 赋值符号

    • 把右边的值赋给左边的变量
    • 这个值的类型必须与指定的类型匹配
  6. 值 - 初始值

    • 要存储在变量中的具体数据
    • 这个值的类型必须与冒号后面指定的类型一致

类型匹配的重要性

手动指定类型时,值的类型必须与指定的类型完全匹配:

加载代码编辑器...

自动推断 vs 手动指定

加载代码编辑器...

如何选择:自动推断 vs 手动指定

现在我们知道有两种方式可以指定变量类型,那么什么时候该用哪种方式呢?

基本选择原则

1. 能自动推断的都推荐使用自动推断

加载代码编辑器...

2. 必须手动指定的情况 在有些编程场景中,TypeScript 无法自动推断类型,这时我们就必须手动指定:

加载代码编辑器...

字符串的特殊形式

1. 单引号 vs 双引号

在 TypeScript 中,字符串可以用单引号 ' ' 或双引号 " " 包围:

加载代码编辑器...

推荐使用双引号:

  • 我们统一推荐使用双引号 "
  • 双引号更通用,也符合大多数编程习惯

2. 空字符串 ""

有时候我们需要表示"没有内容"的文本,这时就使用空字符串:

加载代码编辑器...

空字符串的特点:

  • 空字符串 "" 表示一个完全没有任何字符的字符串
  • 在编程中常用来表示"没有输入"、"空白"或"未填写"的情况

3. 字符串中包含引号的处理

有时候我们的字符串本身需要包含引号,比如对话内容。这时有几种处理方法:

方法一:外层用双引号,内层用单引号

加载代码编辑器...

方法二:使用转义字符 `"

如果字符串内外都需要使用双引号,可以用反斜杠 \ 来"转义":

加载代码编辑器...

什么是转义字符?

转义字符就像给特殊字符"戴上一个面具",让 TypeScript 知道这不是真正的语法符号,而是普通的文本内容:

  • \" - 表示一个普通的双引号字符,不是字符串结束标记
  • \" 中的 \ 告诉 TypeScript:"后面的 " 不要当作字符串结束,当作普通文字处理"

详细工作原理: 当 TypeScript 看到 let quote1 = "勇者说:\"我要打败巨龙!\""; 时:

  1. 看到 " 开始 - 这是字符串开始标记
  2. 看到 勇者说: - 这是普通文本
  3. 看到 \" - 知道这里的 " 是文本内容,不是字符串结束(如果没有 \,字符串会在这里结束!)
  4. 看到 我要打败巨龙! - 这是普通文本
  5. 看到 \" - 知道这里的 " 也是文本内容
  6. 看到 " 结束 - 这是字符串结束标记

所以最终字符串内容是:勇者说:"我要打败巨龙!"

4. 字符串换行 \n

有时候我们需要在字符串中换行,可以使用 \n 来表示换行:

加载代码编辑器...

解释:

  • \n 是一个特殊的字符,表示换行
  • 当程序运行时,\n 会被转换成实际的换行
  • 这样可以让长文本更容易阅读

总结

今天我们正式学习了 TypeScript 的类型系统和两种基本数据类型:

🎯 类型概念(核心基础)

  • 类型就是给数据分类的方式,确保不同类型的数据正确使用
  • TypeScript 通过类型系统防止程序中的类型错误
  • 类型一旦确定就不能改变,这是 TypeScript 的重要规则

🔤 两种基本数据类型

  1. 数字 (number) - 用于计算和计数,可以是整数、负数、小数
    • 不需要引号包围
    • 可以进行数学运算
  2. 字符串 (string) - 用于文本和名称,必须用双引号包围
    • 空字符串 "" - 表示没有内容
    • 字符串中的引号处理:外层用双引号,内层用单引号或转义字符
    • 换行符 \n - 在字符串中创建换行

🤖 TypeScript 的智能类型识别

  • 自动类型推断:TypeScript 根据你赋给变量的值自动确定变量类型
  • 手动类型指定:使用 let 变量名: 类型名 = 值; 的语法明确指定变量类型
  • 类型名称:number(数字)和 string(字符串)
  • 两种方式效果相同:自动推断和手动指定都是正确的编程方法
  • 类型安全:这些特性让程序更可靠,提前发现类型错误

💡 关键理解

  • 数字 vs 字符串:数字不需要引号,字符串必须用双引号包围
  • 字符串引号处理:外层用双引号,对话内容用单引号;必要时用转义字符 \"
  • 类型的作用:防止错误、让代码清晰、提前发现问题
  • TypeScript 的智能:自动识别类型,你只需要专注于编程逻辑

理解数据类型是 TypeScript 编程的基础。通过今天的课程,你已经掌握了变量类型的系统化知识,这将为后续学习更复杂的编程概念打下坚实的基础!

下一步:在下一节课中,我们将学习布尔值类型和如何使用相等运算符来比较两个值!

Previous lesson
Previous
变量赋值和操作 - 变量的高级用法
Next
基础运算符 - 数字运算王国
Next lesson