在前面两节课中,我们学习了变量的基础概念和赋值操作。你可能已经注意到,有些变量存储数字(如 let score = 100),有些变量存储文字(如 let name = "小明")。
TypeScript 会自动"识别"变量应该存储什么类型的数据,而且一旦确定就不能改变。今天我们要正式学习这个概念——数据类型。
在开始学习之前,请记住:
在变量课程中,我们已经见过两种基本的数据类型:
用于表示可以计算的数量:
用于表示文本信息,需要用双引号包围:
你已经知道的重要规则:
现在让我们正式、系统地学习这两种基本数据类型。
数字类型用来表示所有可以用于数学计算的数量:
数字的特点:
字符串类型用来表示所有文本信息:
字符串的特点:
" 包围(这是与数字的重要区别)你可能会问:为什么要把数字和字符串分开?让我们用一个游戏场景来理解:
想象一下游戏中的角色属性:
类型的作用:
就像你不会把计算器放进文具盒,也不会把铅笔放进计算器盒一样,TypeScript 通过类型系统确保每种数据都有合适的"容器"。
现在你已经学习了数字和字符串两种基本数据类型,让我们深入了解 TypeScript 是如何智能识别和管理这些类型的。
TypeScript 有一个智能的类型推断系统,能够自动识别变量存储的数据类型:
这个识别过程是在变量创建时自动完成的,你不需要做任何额外操作!
💡 简单理解:TypeScript 就像一个智能的储物盒管理员,看到你放数字进去,就标记为"数字储物盒";看到你放文字进去,就标记为"文字储物盒"。
核心规则:右边值的类型决定左边变量的类型
当我们创建变量时,TypeScript 会看右边(= 右边)的值是什么类型,然后给左边(= 左边)的变量确定相同的类型:
当我们写这样的代码时:
TypeScript 在幕后会:
这就是为什么我们在前面的课程中可以正常使用变量,而没有遇到类型问题 - TypeScript 一直在幕后自动帮助我们识别类型!
这是 TypeScript 的一个重要规则:
💡 记忆技巧:把 TypeScript 想象成一个严格的储物盒管理员,一旦你把数字放进"数字储物盒",以后就只能放数字,不能放文字!
这个严格的类型规则有很多好处:
这就是 TypeScript 的"类型安全"特性,它让我们的程序更加可靠!
除了让 TypeScript 自动识别类型外,我们也可以手动指定变量的类型。
TypeScript 中两个基本类型的名称是:
手动指定类型的方式很简单:在变量名后面加上冒号 :,然后写上类型名称:
让我们深入理解 let 变量名: 类型名 = 值; 这个结构的每个部分:
let - 变量声明关键字
变量名 - 变量的标识符
name, level, score: - 类型分隔符
类型名 - 数据类型名称
string - 字符串类型,存储文本信息number - 数字类型,存储数值数据= - 赋值符号
值 - 初始值
手动指定类型时,值的类型必须与指定的类型完全匹配:
现在我们知道有两种方式可以指定变量类型,那么什么时候该用哪种方式呢?
1. 能自动推断的都推荐使用自动推断
2. 必须手动指定的情况 在有些编程场景中,TypeScript 无法自动推断类型,这时我们就必须手动指定:
在 TypeScript 中,字符串可以用单引号 ' ' 或双引号 " " 包围:
推荐使用双引号:
"""有时候我们需要表示"没有内容"的文本,这时就使用空字符串:
空字符串的特点:
"" 表示一个完全没有任何字符的字符串有时候我们的字符串本身需要包含引号,比如对话内容。这时有几种处理方法:
如果字符串内外都需要使用双引号,可以用反斜杠 \ 来"转义":
什么是转义字符?
转义字符就像给特殊字符"戴上一个面具",让 TypeScript 知道这不是真正的语法符号,而是普通的文本内容:
\" - 表示一个普通的双引号字符,不是字符串结束标记\" 中的 \ 告诉 TypeScript:"后面的 " 不要当作字符串结束,当作普通文字处理"详细工作原理:
当 TypeScript 看到 let quote1 = "勇者说:\"我要打败巨龙!\""; 时:
" 开始 - 这是字符串开始标记\" - 知道这里的 " 是文本内容,不是字符串结束(如果没有 \,字符串会在这里结束!)\" - 知道这里的 " 也是文本内容" 结束 - 这是字符串结束标记所以最终字符串内容是:勇者说:"我要打败巨龙!"
\n有时候我们需要在字符串中换行,可以使用 \n 来表示换行:
解释:
\n 是一个特殊的字符,表示换行\n 会被转换成实际的换行今天我们正式学习了 TypeScript 的类型系统和两种基本数据类型:
"" - 表示没有内容\n - 在字符串中创建换行let 变量名: 类型名 = 值; 的语法明确指定变量类型number(数字)和 string(字符串)\"理解数据类型是 TypeScript 编程的基础。通过今天的课程,你已经掌握了变量类型的系统化知识,这将为后续学习更复杂的编程概念打下坚实的基础!
下一步:在下一节课中,我们将学习布尔值类型和如何使用相等运算符来比较两个值!