TypeScript 高级类型详解

TypeScript 高级类型详解 TypeScript 的类型系统是其最强大的特性之一。本文将深入探讨 TypeScript 的高级类型,帮助你写出更类型安全、更易维护的代码。 1. 泛型(Generics) 泛型是 TypeScript 中最强大的特性之一,它允许我们编写可重用的代码。 基础泛型 // 泛型函数 function identity<T>(arg: T): T { return arg; } // 使用 const num = identity<number>(42); const str = identity<string>("hello"); // 类型推断 const inferred = identity(42); // T 被推断为 number 泛型约束 interface HasLength { length: number; } // 约束 T 必须具有 length 属性 function logLength<T extends HasLength>(arg: T): T { console.log(arg.length); return arg; } logLength("hello"); // ✅ 字符串有 length logLength([1, 2, 3]); // ✅ 数组有 length logLength({ length: 10 }); // ✅ 对象有 length // logLength(42); // ❌ number 没有 length 泛型接口 interface GenericResponse<T> { data: T; status: number; message: string; } // 使用 interface User { id: number; name: string; } const userResponse: GenericResponse<User> = { data: { id: 1, name: "John" }, status: 200, message: "Success" }; 泛型类 class GenericStack<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]; } } // 使用 const numberStack = new GenericStack<number>(); numberStack.push(1); numberStack.push(2); const top = numberStack.pop(); // number | undefined 2. 条件类型(Conditional Types) 条件类型允许我们根据类型关系选择类型。 ...

March 18, 2024 · 技术博主