TypeScript 的基本类型:数字、字符串和布尔

TypeScript 的基本类型:数字、字符串和布尔

欢迎继续跟随本专栏的第三篇文章。在前两期中,我们介绍了 TypeScript 的基础概念并完成了开发环境的设置。今天,我们将深入探讨 TypeScript 的核心元素之一:基本类型。具体而言,我们将聚焦于 number、string 和 boolean 这三种原始类型。从声明和赋值入手,逐步扩展到常见操作,并初步介绍类型推断机制。这一知识将为您后续学习更复杂类型打下坚实基础。我们将结合实际示例,确保内容逐步展开,便于掌握。

理解原始类型的作用

在 TypeScript 中,类型系统是其核心优势,而原始类型则是这一系统的起点。这些类型直接对应 JavaScript 的基本数据形式,但通过静态检查,确保代码在编译时就避免类型相关错误。number 用于表示数值,string 处理文本,boolean 则管理真假逻辑。

为什么从这些类型开始?因为它们是最简单的构建块,几乎所有复杂数据结构都以此为基础。掌握它们,能帮助您理解 TypeScript 如何提升 JavaScript 的安全性。例如,在 JavaScript 中,变量可以随意改变类型(如从数字变为字符串),这可能导致隐蔽 bug。而在 TypeScript 中,通过显式声明,您可以锁定类型,及早发现问题。

TypeScript 的类型系统是可选的:如果不指定类型,它会尝试推断;但显式声明能使代码更清晰,尤其在团队协作中。

number 类型:数值处理的基石

number 类型涵盖所有数值,包括整数、浮点数和小数。它与 JavaScript 的 Number 类型一致,但 TypeScript 添加了静态检查。

  1. 声明与赋值

    • 基本语法:使用冒号(:)指定类型。

      typescript 复制代码
      let age: number = 28;  // 显式声明并赋值
      let height: number;   // 声明后可后续赋值
      height = 1.75;        // 有效赋值
      // height = "tall";   // 错误:字符串不可赋值为 number
    • 这确保了变量始终保持数值类型,避免意外转换。

  2. 常见操作

    • 算术运算:加减乘除、取模等。

      typescript 复制代码
      let a: number = 10;
      let b: number = 3;
      let sum: number = a + b;      // 13
      let remainder: number = a % b; // 1
    • 内置方法:利用 Math 对象进行高级计算,如取整或随机数。

      typescript 复制代码
      let 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 的字符串操作,通过类型检查防止非文本混入。

  1. 声明与赋值

    • 简单示例:

      typescript 复制代码
      let name: string = "Alice";  // 使用双引号
      let greeting: string;
      greeting = 'Hello';         // 使用单引号
      // greeting = 123;          // 错误:数字不可赋值为 string
    • 模板字符串:允许嵌入表达式,使用反引号(`)。

      typescript 复制代码
      let fullName: string = `Alice Smith`;
      let message: string = `Welcome, ${fullName}!`;  // "Welcome, Alice Smith!"
  2. 常见操作

    • 连接与长度:使用 + 或 concat 方法。

      typescript 复制代码
      let first: string = "Type";
      let second: string = "Script";
      let combined: string = first + second;  // "TypeScript"
      let length: number = combined.length;   // 10,返回 number 类型
    • 子串与转换:提取部分文本或大小写转换。

      typescript 复制代码
      let text: string = "Hello World";
      let substring: string = text.substring(0, 5);  // "Hello"
      let upper: string = text.toUpperCase();        // "HELLO WORLD"
    • 搜索与替换:实用方法如 includes 或 replace。

      typescript 复制代码
      let 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 确保其不被其他类型污染。

  1. 声明与赋值

    • 基础用法:

      typescript 复制代码
      let isActive: boolean = true;
      let isLoggedIn: boolean;
      isLoggedIn = false;
      // isLoggedIn = 1;  // 错误:数字不可赋值为 boolean(不同于 JavaScript 的隐式转换)
  2. 常见操作

    • 逻辑运算:与(&&)、或(||)、非(!)。

      typescript 复制代码
      let 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 等结构。

      typescript 复制代码
      let success: boolean = true;
      if (success) {
        console.log("Operation succeeded");
      } else {
        console.log("Operation failed");
      }
    • 与其他类型结合:如检查数值范围。

      typescript 复制代码
      let score: number = 85;
      let passed: boolean = score >= 60;  // true

boolean 的严格性有助于避免 JavaScript 中常见的 truthy/falsy 混淆,提升代码的逻辑清晰度。

类型推断的初步介绍

TypeScript 的一个智能特性是类型推断:当您不显式指定类型时,编译器会根据上下文自动推导。这简化了代码,但需谨慎使用以保持可读性。

  • 基本推断

    typescript 复制代码
    let inferredNumber = 42;      // 推断为 number
    let inferredString = "hello"; // 推断为 string
    let inferredBoolean = true;   // 推断为 boolean
    // inferredNumber = "forty-two"; // 错误:字符串不可赋值为推断的 number
  • 上下文推断:在函数或对象中更强大。

    typescript 复制代码
    function multiply(x: number, y: number) {
      return x * y;  // 返回值推断为 number
    }
    let result = multiply(2, 3);  // result 推断为 number
  • 最佳实践:对于简单变量,依赖推断;对于函数参数和返回,建议显式声明以增强文档性。如果推断失败(如 any 类型),需手动指定。

类型推断减少了 boilerplate 代码,但理解其机制能帮助您在复杂场景中优化类型系统。

结语:构建坚实的基础

通过本篇文章,您已掌握 number、string 和 boolean 的基础用法,以及类型推断的入门知识。这些元素是 TypeScript 类型系统的基石,将在后续文章中扩展到数组、对象等。实践是关键:尝试在您的项目中应用这些类型,观察编译器的反馈。下一期将探讨数组和元组,敬请期待。若有疑问,欢迎交流。我们将继续深入探索。

相关推荐
旖旎夜光17 分钟前
Linux(12)(下)
linux·网络
We་ct21 分钟前
LeetCode 15. 三数之和:排序+双指针解法全解析
前端·算法·leetcode·typescript
郝亚军28 分钟前
如何在windows11和Ubuntu linux之间互传文件
linux·运维·ubuntu
ghostmen29 分钟前
Kuboard 离线安装与 K3s 集群绑定完整指南
linux·kuboard·k3s
j_xxx404_34 分钟前
Linux:进程状态
linux·运维·服务器
济61734 分钟前
linux 系统移植(第二十三期)---- 进一步完善BusyBox构建的根文件系统---- Ubuntu20.04
linux·运维·服务器
程序员 _孜然36 分钟前
openkylin、ubuntu等系统实现串口自动登录
linux·运维·ubuntu
hweiyu0041 分钟前
Linux 命令:csplit
linux·运维·服务器
守正出琦42 分钟前
Linux信号核心函数速查表
linux·运维·服务器
花花鱼42 分钟前
Linux中的755及644等等速记
linux·运维·服务器