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

相关推荐
hboot8 小时前
别再被 TS 类型冲突折磨了!一文搞懂类型合并规则
前端·typescript
拜托啦!狮子8 小时前
安装和使用Homer(linux)
linux·运维·服务器
liulilittle8 小时前
XDP VNP虚拟以太网关(章节:一)
linux·服务器·开发语言·网络·c++·通信·xdp
Sapphire~8 小时前
Linux-13 火狐浏览器书签丢失解决
linux
王林不想说话8 小时前
提升工作效率的Utils
前端·javascript·typescript
不染尘.9 小时前
进程切换和线程调度
linux·数据结构·windows·缓存
cute_ming9 小时前
从 Node.js + TypeScript 无缝切换到 Python 的最佳实践
python·typescript·node.js
剑之所向9 小时前
c# modbus大小端
linux·运维·网络
比奇堡派星星9 小时前
Linux4.4使用AW9523
linux·开发语言·arm开发·驱动开发
顶点多余10 小时前
Linux中的基本命令-2
linux·运维·服务器