news 2026/5/5 16:58:50

TypeScript 入门到精通:类型系统与实战项目

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
TypeScript 入门到精通:类型系统与实战项目

TypeScript 类型系统基础

TypeScript 的核心是静态类型系统。通过类型注解,可以在编译时捕获潜在的错误。基本类型包括numberstringbooleanarraytupleenumanyvoid等。

let age: number = 25; let name: string = "Alice"; let isActive: boolean = true; let scores: number[] = [90, 85, 95]; let tuple: [string, number] = ["Alice", 25];

接口与类型别名

接口(interface)和类型别名(type)用于定义复杂类型结构。接口更适合扩展和实现,类型别名更适合联合类型和交叉类型。

interface User { id: number; name: string; email?: string; // 可选属性 } type Point = { x: number; y: number; }; function printUser(user: User): void { console.log(`User: ${user.name}, ID: ${user.id}`); }

泛型的使用

泛型(Generics)提供代码复用性,允许在定义函数、类或接口时使用类型参数。

function identity<T>(arg: T): T { return arg; } let output = identity<string>("hello");

类与继承

TypeScript 支持面向对象编程,包括类、继承、访问修饰符(publicprivateprotected)等。

class Animal { constructor(public name: string) {} move(distance: number = 0) { console.log(`${this.name} moved ${distance}m.`); } } class Dog extends Animal { bark() { console.log("Woof! Woof!"); } } const dog = new Dog("Buddy"); dog.bark(); dog.move(10);

实战项目:用户管理系统

以下是一个简单的用户管理系统的实现,包含类型定义、接口和类。

interface IUser { id: number; name: string; email: string; } class UserManager { private users: IUser[] = []; addUser(user: IUser): void { this.users.push(user); } getUser(id: number): IUser | undefined { return this.users.find(user => user.id === id); } listUsers(): IUser[] { return this.users; } } const manager = new UserManager(); manager.addUser({ id: 1, name: "Alice", email: "alice@example.com" }); manager.addUser({ id: 2, name: "Bob", email: "bob@example.com" }); console.log(manager.listUsers()); console.log(manager.getUser(1));

高级类型与工具类型

TypeScript 提供了多种工具类型(Utility Types),如PartialReadonlyPickOmit等,用于简化类型操作。

type PartialUser = Partial<IUser>; // 所有属性变为可选 type ReadonlyUser = Readonly<IUser>; // 所有属性变为只读 type UserNameAndEmail = Pick<IUser, "name" | "email">; // 选择部分属性 type UserWithoutEmail = Omit<IUser, "email">; // 排除部分属性

异步编程与类型

TypeScript 支持async/await语法,并可以明确指定 Promise 的返回类型。

async function fetchUser(id: number): Promise<IUser> { const response = await fetch(`/api/users/${id}`); const data = await response.json(); return data as IUser; } fetchUser(1).then(user => console.log(user));

类型守卫与类型断言

类型守卫(Type Guards)和类型断言(Type Assertions)用于在运行时检查类型或强制类型转换。

function isUser(obj: any): obj is IUser { return obj && typeof obj.id === "number" && typeof obj.name === "string"; } const data: unknown = { id: 1, name: "Alice" }; if (isUser(data)) { console.log(data.name); } const user = data as IUser; // 类型断言
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/1 6:36:19

3B参数也能强推理!Jamba小模型极速登场

3B参数也能强推理&#xff01;Jamba小模型极速登场 【免费下载链接】AI21-Jamba-Reasoning-3B 项目地址: https://ai.gitcode.com/hf_mirrors/ai21labs/AI21-Jamba-Reasoning-3B 导语&#xff1a;AI21 Labs推出仅含30亿参数的Jamba Reasoning 3B模型&#xff0c;通过Tr…

作者头像 李华
网站建设 2026/4/30 10:03:18

Emu3.5:10万亿token!原生多模态AI创作新标杆

Emu3.5&#xff1a;10万亿token&#xff01;原生多模态AI创作新标杆 【免费下载链接】Emu3.5 项目地址: https://ai.gitcode.com/BAAI/Emu3.5 导语&#xff1a;BAAI团队推出的Emu3.5多模态大模型&#xff0c;凭借10万亿token的海量训练数据和创新的原生多模态架构&…

作者头像 李华
网站建设 2026/5/2 3:15:45

腾讯混元4B-GPTQ:4bit轻量化AI推理新选择

腾讯混元4B-GPTQ&#xff1a;4bit轻量化AI推理新选择 【免费下载链接】Hunyuan-4B-Instruct-GPTQ-Int4 腾讯混元4B指令微调模型GPTQ量化版&#xff0c;专为高效推理而生。支持4bit量化压缩&#xff0c;大幅降低显存占用&#xff0c;适配消费级显卡与边缘设备。模型融合双思维推…

作者头像 李华
网站建设 2026/5/5 13:18:17

ResNet18物体识别详解:预处理与后处理技巧

ResNet18物体识别详解&#xff1a;预处理与后处理技巧 1. 引言&#xff1a;通用物体识别中的ResNet-18价值 在计算机视觉领域&#xff0c;通用物体识别是构建智能系统的基础能力之一。从智能家居到内容审核&#xff0c;再到增强现实应用&#xff0c;能够快速、准确地理解图像…

作者头像 李华
网站建设 2026/5/5 12:17:09

快手AutoThink大模型:智能调节推理深度的新突破

快手AutoThink大模型&#xff1a;智能调节推理深度的新突破 【免费下载链接】KwaiCoder-AutoThink-preview 项目地址: https://ai.gitcode.com/hf_mirrors/Kwaipilot/KwaiCoder-AutoThink-preview 导语&#xff1a;快手Kwaipilot团队推出KwaiCoder-AutoThink-preview模…

作者头像 李华
网站建设 2026/5/2 10:34:21

AHN-Mamba2:Qwen2.5超长文本处理效率倍增

AHN-Mamba2&#xff1a;Qwen2.5超长文本处理效率倍增 【免费下载链接】AHN-Mamba2-for-Qwen-2.5-Instruct-14B 项目地址: https://ai.gitcode.com/hf_mirrors/ByteDance-Seed/AHN-Mamba2-for-Qwen-2.5-Instruct-14B 字节跳动种子团队&#xff08;ByteDance-Seed&#x…

作者头像 李华