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 类型系统的基石,将在后续文章中扩展到数组、对象等。实践是关键:尝试在您的项目中应用这些类型,观察编译器的反馈。下一期将探讨数组和元组,敬请期待。若有疑问,欢迎交流。我们将继续深入探索。

相关推荐
子琦啊24 分钟前
【算法复习】字符串 | 两个底层直觉,吃透高频题
linux·运维·算法
AOwhisky1 小时前
Kubernetes 学习笔记:集群管理、命名空间与 Pod 基础
linux·运维·笔记·学习·云原生·kubernetes
小龙在慢慢变强..2 小时前
目录结构(FHS 标准)
linux·运维·服务器
2035去旅行2 小时前
嵌入式开发,如何选择C标准库
linux·arm开发
刘延林.2 小时前
win11系统下通过 WSL2 安装Ubuntu 24.04 使用RTX 5080 GPU
linux·运维·ubuntu
CodeOfCC3 小时前
Linux 嵌入式arm64安装openclaw
linux·运维·服务器
宵时待雨4 小时前
linux笔记归纳3:linux开发工具
linux·运维·笔记
magrich5 小时前
安装NoMachine并解决无外接显示器桌面黑屏
linux·运维·服务器
fish_xk5 小时前
Linus基础指令
linux·服务器
用户34268877621965 小时前
Agent + Ollama 部署踩坑记录
ubuntu