TypeScript 算法与数据结构:完整指南

面向初学者的在线Python训练器

轻松学习Python,无需理论负担。在浏览器中直接解决带自动检查的实践任务,无需安装任何东西。

开始课程

引言:为什么算法和数据结构在 TypeScript 中很重要?



在现代 Web 开发中,TypeScript 占据领先地位,它提供了严格的类型化和强大的工具来构建可扩展的应用程序。然而,如果不理解基础的算法和数据结构,即使是最优雅的代码也不会高效。本文是您进入 TypeScript 优化代码世界的指南。我们将剖析关键的数据结构,展示如何结合类型实现它们,并探讨经典算法。阅读后,您将能够编写不仅可运行,而且快速、可预测的代码。



1. 带类型化的基础数据结构



TypeScript 允许严格定义数据结构中可以存储哪些数据类型。这可以在编译阶段防止错误。让我们来看三种基础结构。



1.1. 栈 (Stack) — LIFO 原则

栈遵循“后进先出”(Last In, First Out)的原则。它非常适合需要撤销操作的场景(例如,浏览器历史记录)。

// 使用泛型 T 实现栈class Stack<T> {    private items: T[] = [];

push(item: T): void { this.items.push(item); }

pop(): T | undefined { return this.items.pop(); }

peek(): T | undefined { return this.items[this.items.length - 1]; }

isEmpty(): boolean { return this.items.length === 0; }}

// 使用示例const numberStack = new Stack<number>();numberStack.push(10);numberStack.push(20);console.log(numberStack.pop()); // 20


1.2. 队列 (Queue) — FIFO 原则

队列遵循“先进先出”(First In, First Out)的原则。它用于按到达顺序处理任务,例如在消息队列系统中。

class Queue<T> {    private items: T[] = [];

enqueue(item: T): void { this.items.push(item); }

dequeue(): T | undefined { return this.items.shift(); }

front(): T | undefined { return this.items[0]; }

size(): number { return this.items.length; }}

// 使用自定义类型的示例interface Task { id: number; name: string;}const taskQueue = new Queue<Task>();taskQueue.enqueue({ id: 1, name: '处理订单' });taskQueue.enqueue({ id: 2, name: '发送邮件' });


1.3. 链表 (Linked List)

链表由节点组成,每个节点都引用下一个节点。与数组不同,在链表中间插入和删除元素不需要移动所有元素。

class ListNode<T> {    value: T;    next: ListNode<T> | null = null;

constructor(value: T) { this.value = value; }}

class LinkedList<T> { private head: ListNode<T> | null = null;

add(value: T): void { const newNode = new ListNode(value); if (!this.head) { this.head = newNode; return; } let current = this.head; while (current.next) { current = current.next; } current.next = newNode; }

print(): void { let current = this.head; while (current) { console.log(current.value); current = current.next; } }}

// 使用const list = new LinkedList<string>();list.add('TypeScript');list.add('Python');list.print(); // TypeScript, Python


2. 排序和搜索算法



数据排序是最常见的操作之一。TypeScript 允许创建可以与任何数据类型一起工作的通用函数。



2.1. 快速排序 (Quick Sort)

这是最高效的算法之一,具有

博客

书籍推荐