news 2026/4/16 14:39:40

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/4/16 13:15:03

ResNet18部署指南:Kubernetes集群方案

ResNet18部署指南&#xff1a;Kubernetes集群方案 1. 背景与应用场景 1.1 通用物体识别的工程需求 在当前AI服务广泛落地的背景下&#xff0c;通用图像分类已成为智能监控、内容审核、自动化标注等场景的基础能力。ResNet-18作为经典轻量级卷积神经网络&#xff0c;在精度与…

作者头像 李华
网站建设 2026/4/16 13:16:24

Granite微模型:3B参数解锁企业级AI能力

Granite微模型&#xff1a;3B参数解锁企业级AI能力 【免费下载链接】granite-4.0-h-micro-bnb-4bit 项目地址: https://ai.gitcode.com/hf_mirrors/unsloth/granite-4.0-h-micro-bnb-4bit IBM推出的Granite-4.0-H-Micro模型以仅30亿参数规模&#xff0c;实现了企业级AI…

作者头像 李华
网站建设 2026/4/16 13:16:16

Lumina-DiMOO:极速全能扩散大模型,解锁多模态新体验

Lumina-DiMOO&#xff1a;极速全能扩散大模型&#xff0c;解锁多模态新体验 【免费下载链接】Lumina-DiMOO 项目地址: https://ai.gitcode.com/hf_mirrors/Alpha-VLLM/Lumina-DiMOO 导语&#xff1a;由多机构联合研发的Lumina-DiMOO多模态大模型正式亮相&#xff0c;凭…

作者头像 李华
网站建设 2026/4/16 10:38:16

腾讯开源Hunyuan-GameCraft:AI生成交互式游戏视频神器

腾讯开源Hunyuan-GameCraft&#xff1a;AI生成交互式游戏视频神器 【免费下载链接】Hunyuan-GameCraft-1.0 Hunyuan-GameCraft是腾讯开源的高动态交互式游戏视频生成框架&#xff0c;支持从参考图和键鼠信号生成连贯游戏视频。采用混合历史条件训练策略与模型蒸馏技术&#xff…

作者头像 李华
网站建设 2026/4/16 13:16:07

Gemma 3 (270M)免费微调:Unsloth极速教程

Gemma 3 (270M)免费微调&#xff1a;Unsloth极速教程 【免费下载链接】gemma-3-270m-it-GGUF 项目地址: https://ai.gitcode.com/hf_mirrors/unsloth/gemma-3-270m-it-GGUF 导语&#xff1a;Google最新开源的Gemma 3系列模型现已支持通过Unsloth工具进行免费微调&#…

作者头像 李华
网站建设 2026/4/16 13:17:36

StepFun-Formalizer:如何用AI轻松实现数学转Lean 4?

StepFun-Formalizer&#xff1a;如何用AI轻松实现数学转Lean 4&#xff1f; 【免费下载链接】StepFun-Formalizer-32B 项目地址: https://ai.gitcode.com/StepFun/StepFun-Formalizer-32B 导语&#xff1a;StepFun-Formalizer-32B模型正式发布&#xff0c;通过知识与推…

作者头像 李华