TypeScript 的基本类型:数字、字符串和布尔
欢迎继续跟随本专栏的第三篇文章。在前两期中,我们介绍了 TypeScript 的基础概念并完成了开发环境的设置。今天,我们将深入探讨 TypeScript 的核心元素之一:基本类型。具体而言,我们将聚焦于 number、string 和 boolean 这三种原始类型。从声明和赋值入手,逐步扩展到常见操作,并初步介绍类型推断机制。这一知识将为您后续学习更复杂类型打下坚实基础。我们将结合实际示例,确保内容逐步展开,便于掌握。
理解原始类型的作用
在 TypeScript 中,类型系统是其核心优势,而原始类型则是这一系统的起点。这些类型直接对应 JavaScript 的基本数据形式,但通过静态检查,确保代码在编译时就避免类型相关错误。number 用于表示数值,string 处理文本,boolean 则管理真假逻辑。
为什么从这些类型开始?因为它们是最简单的构建块,几乎所有复杂数据结构都以此为基础。掌握它们,能帮助您理解 TypeScript 如何提升 JavaScript 的安全性。例如,在 JavaScript 中,变量可以随意改变类型(如从数字变为字符串),这可能导致隐蔽 bug。而在 TypeScript 中,通过显式声明,您可以锁定类型,及早发现问题。
TypeScript 的类型系统是可选的:如果不指定类型,它会尝试推断;但显式声明能使代码更清晰,尤其在团队协作中。
number 类型:数值处理的基石
number 类型涵盖所有数值,包括整数、浮点数和小数。它与 JavaScript 的 Number 类型一致,但 TypeScript 添加了静态检查。
-
声明与赋值:
-
基本语法:使用冒号(:)指定类型。
typescriptlet age: number = 28; // 显式声明并赋值 let height: number; // 声明后可后续赋值 height = 1.75; // 有效赋值 // height = "tall"; // 错误:字符串不可赋值为 number -
这确保了变量始终保持数值类型,避免意外转换。
-
-
常见操作:
-
算术运算:加减乘除、取模等。
typescriptlet a: number = 10; let b: number = 3; let sum: number = a + b; // 13 let remainder: number = a % b; // 1 -
内置方法:利用 Math 对象进行高级计算,如取整或随机数。
typescriptlet pi: number = Math.PI; // 3.141592653589793 let random: number = Math.random() * 100; // 0 到 100 间的随机数 let rounded: number = Math.round(4.6); // 5 -
注意:number 不区分整数和浮点,但对于大整数,可考虑 BigInt(稍后文章介绍)。
-
在实际应用中,number 常用于计算、计数器或数据处理,确保运算结果的类型一致性。
string 类型:文本处理的利器
string 类型用于存储文本,支持单引号、双引号和模板字符串。它强化了 JavaScript 的字符串操作,通过类型检查防止非文本混入。
-
声明与赋值:
-
简单示例:
typescriptlet name: string = "Alice"; // 使用双引号 let greeting: string; greeting = 'Hello'; // 使用单引号 // greeting = 123; // 错误:数字不可赋值为 string -
模板字符串:允许嵌入表达式,使用反引号(`)。
typescriptlet fullName: string = `Alice Smith`; let message: string = `Welcome, ${fullName}!`; // "Welcome, Alice Smith!"
-
-
常见操作:
-
连接与长度:使用 + 或 concat 方法。
typescriptlet first: string = "Type"; let second: string = "Script"; let combined: string = first + second; // "TypeScript" let length: number = combined.length; // 10,返回 number 类型 -
子串与转换:提取部分文本或大小写转换。
typescriptlet text: string = "Hello World"; let substring: string = text.substring(0, 5); // "Hello" let upper: string = text.toUpperCase(); // "HELLO WORLD" -
搜索与替换:实用方法如 includes 或 replace。
typescriptlet sentence: string = "The quick brown fox"; let hasFox: boolean = sentence.includes("fox"); // true,返回 boolean let replaced: string = sentence.replace("fox", "dog"); // "The quick brown dog"
-
string 类型在用户输入、日志记录或 UI 渲染中不可或缺,确保文本操作的可靠性。
boolean 类型:逻辑判断的核心
boolean 类型仅有两个值:true 或 false。它用于条件判断和状态标志,TypeScript 确保其不被其他类型污染。
-
声明与赋值:
-
基础用法:
typescriptlet isActive: boolean = true; let isLoggedIn: boolean; isLoggedIn = false; // isLoggedIn = 1; // 错误:数字不可赋值为 boolean(不同于 JavaScript 的隐式转换)
-
-
常见操作:
-
逻辑运算:与(&&)、或(||)、非(!)。
typescriptlet hasAccess: boolean = true; let isAdmin: boolean = false; let canEdit: boolean = hasAccess && isAdmin; // false let canView: boolean = hasAccess || isAdmin; // true let notActive: boolean = !hasAccess; // false -
在条件语句中:boolean 常驱动 if、while 等结构。
typescriptlet success: boolean = true; if (success) { console.log("Operation succeeded"); } else { console.log("Operation failed"); } -
与其他类型结合:如检查数值范围。
typescriptlet score: number = 85; let passed: boolean = score >= 60; // true
-
boolean 的严格性有助于避免 JavaScript 中常见的 truthy/falsy 混淆,提升代码的逻辑清晰度。
类型推断的初步介绍
TypeScript 的一个智能特性是类型推断:当您不显式指定类型时,编译器会根据上下文自动推导。这简化了代码,但需谨慎使用以保持可读性。
-
基本推断:
typescriptlet inferredNumber = 42; // 推断为 number let inferredString = "hello"; // 推断为 string let inferredBoolean = true; // 推断为 boolean // inferredNumber = "forty-two"; // 错误:字符串不可赋值为推断的 number -
上下文推断:在函数或对象中更强大。
typescriptfunction multiply(x: number, y: number) { return x * y; // 返回值推断为 number } let result = multiply(2, 3); // result 推断为 number -
最佳实践:对于简单变量,依赖推断;对于函数参数和返回,建议显式声明以增强文档性。如果推断失败(如 any 类型),需手动指定。
类型推断减少了 boilerplate 代码,但理解其机制能帮助您在复杂场景中优化类型系统。
结语:构建坚实的基础
通过本篇文章,您已掌握 number、string 和 boolean 的基础用法,以及类型推断的入门知识。这些元素是 TypeScript 类型系统的基石,将在后续文章中扩展到数组、对象等。实践是关键:尝试在您的项目中应用这些类型,观察编译器的反馈。下一期将探讨数组和元组,敬请期待。若有疑问,欢迎交流。我们将继续深入探索。