dede 添加演示网站做网站 做app好

张小明 2026/1/12 7:27:34
dede 添加演示网站,做网站 做app好,网站设计就业怎么样,免费微信商城系统TypeScript 泛型#xff08;Generics#xff09;详解 泛型#xff08;Generics#xff09; 是 TypeScript 最强大、最核心的特性之一。它允许你创建可重用、类型安全的组件#xff0c;在不牺牲类型检查的前提下#xff0c;让函数、类、接口等能够处理多种类型#xff0…TypeScript 泛型Generics详解泛型Generics是 TypeScript 最强大、最核心的特性之一。它允许你创建可重用、类型安全的组件在不牺牲类型检查的前提下让函数、类、接口等能够处理多种类型而不是固定为某种特定类型。泛型的核心思想“类型变量”—— 用占位符如T表示类型在使用时再指定具体类型。1. 泛型函数Generic Functions基础示例身份函数Identity Function// 普通函数无泛型functionidentity(arg:number):number{returnarg;}// 使用 any失去类型安全functionidentityAny(arg:any):any{returnarg;}// let output: string identityAny(123); // 不会报错但不安全// 泛型版本推荐functionidentityT(arg:T):T{returnarg;}// 使用时指定类型letnumOutput:numberidentitynumber(123);letstrOutput:stringidentitystring(hello);// 或依靠类型推断最常用letboolOutputidentity(true);// 类型自动推断为 boolean多个泛型参数functionmergeT,U(obj1:T,obj2:U):TU{return{...obj1,...obj2};}letmergedmerge({name:Alice},{age:30});// merged 类型{ name: string; } { age: number; } → { name: string; age: number; }2. 泛型接口Generic InterfacesinterfaceGenericArrayT{items:T[];add(item:T):void;get(index:number):T;}// 使用letnumberArray:GenericArraynumber{items:[1,2,3],add(item){this.items.push(item);},get(index){returnthis.items[index];}};letstringArray:GenericArraystring{items:[a,b],add(item){this.items.push(item);},get(index){returnthis.items[index];}};3. 泛型类Generic ClassesclassBoxT{privatecontent:T;constructor(initial:T){this.contentinitial;}set(value:T):void{this.contentvalue;}get():T{returnthis.content;}}// 使用letnumberBoxnewBoxnumber(100);numberBox.set(200);console.log(numberBox.get());// 200letstringBoxnewBoxstring(hello);stringBox.set(world);// stringBox.set(123); // 错误类型不匹配4. 泛型约束Constraints—— 限制 T 的范围默认情况下T可以是任何类型有时需要限制它具有某些属性。// 约束 T 必须有 length 属性functionprintLengthTextends{length:number}(arg:T):void{console.log(arg.length);}printLength(hello);// OKprintLength([1,2,3]);// OKprintLength({length:10,value:5});// OK// printLength(123); // 错误number 没有 length使用 keyof 约束键functiongetPropertyT,KextendskeyofT(obj:T,key:K):T[K]{returnobj[key];}letperson{name:Alice,age:30};letnamegetProperty(person,name);// 类型stringletagegetProperty(person,age);// 类型number// getProperty(person, email); // 错误email 不存在5. 默认泛型参数Default Type ParametersTS 2.3interfaceApiResponseTany{data:T;status:number;}// 使用时可省略letresponse:ApiResponse{data:ok,status:200};// 或指定letjsonResponse:ApiResponsestring[]{data:[a,b],status:200};6. 常见泛型应用场景场景示例数组工具函数function firstT(arr: T[]): TPromisePromiseTTS 内置React 组件function ListT(props: { items: T[] })类型安全的工厂函数function createT(c: new () T): T映射类型type PartialT { [K in keyof T]?: T[K] }7. 内置泛型工具类型Utility TypesTypeScript 自带大量基于泛型的工具类型类型作用示例PartialT所有属性可选PartialUserRequiredT所有属性必选ReadonlyT所有属性只读PickT, K挑选属性PickUser, “name”OmitT, K排除属性OmitUser, passwordRecordK, T创建键值对象类型Recordstring, numberReturnTypeT获取函数返回值类型ReturnTypetypeof fetchParametersT获取函数参数元组8. 最佳实践建议建议说明优先让 TS 自动推断泛型如identity(hi)而非identitystring(hi)使用约束避免过度宽松T extends { id: number }等泛型函数名后写T保持一致性避免泛型嵌套过深可读性优先结合接口/类使用泛型构建可复用组件多用内置工具类型减少手动编写复杂类型小结泛型速查表写法含义function fnT(arg: T): T基本泛型函数T extends U约束 T 必须继承 UK extends keyof T键约束class BoxT泛型类interface ListT泛型接口PromiseT内置泛型示例PartialT工具类型示例泛型是 TypeScript 从“类型安全脚本语言”提升为“工业级类型系统”的关键。掌握泛型后你可以编写高度可复用、类型严谨的库和应用如 React、NestJS、RxJS 等都大量使用泛型。如果您想看更多实战示例如泛型组件在 React 中的使用、高级条件泛型、泛型递归类型或者需要一个完整的泛型工具库示例请告诉我
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

做网站的时候旋转图片512m内存做网站

Excalidraw 与区块链节点网络拓扑的可视化实践 在一次深夜的跨链安全复盘会议上,团队需要紧急重构一张核心网络图,以展示新发现的潜在攻击路径。传统流程下,这往往意味着设计师重新出图、反复确认、邮件来回——至少半天。但这次,…

张小明 2026/1/8 11:33:18 网站建设

做网站最少多少钱游戏怎么开发

FaceFusion模型剪枝实践:减少70%参数量仍保持性能 在AI生成内容(AIGC)浪潮席卷影视、社交与实时娱乐的今天,人脸替换技术已不再是实验室里的炫技工具,而是真正走进了短视频创作、虚拟主播、在线教育等真实场景。FaceFu…

张小明 2026/1/8 11:42:20 网站建设

织梦网站图片不显示图片网络科技扣钱是咋回事

ghettoVCB 虚拟机备份工具完整使用指南 【免费下载链接】ghettoVCB ghettoVCB 项目地址: https://gitcode.com/gh_mirrors/gh/ghettoVCB 前言 ghettoVCB 是一款功能强大的开源虚拟机备份解决方案,专为 VMware ESX(i) 服务器设计。作为一款轻量级的备份工具&…

张小明 2026/1/8 11:53:37 网站建设

网站开发流程比较合理电商网页制作素材

突破EmotiVoice 500字限制的3种高效策略 在语音合成领域,EmotiVoice 已成为开源圈中一颗耀眼的明星。它以出色的多情感表达能力、精准的零样本音色克隆技术,被广泛应用于有声书朗读、虚拟主播配音、游戏NPC对话生成等场景。然而,许多用户在实…

张小明 2026/1/9 20:42:37 网站建设

网站建设公司十年乐云seo怎样启动wordpress

文末联系小编,获取项目源码企业能源管理系统EMS是一套集数据采集、监控、分析与控制于一体的技术方案,它能帮助企业实时监测和优化能源使用,就像给工厂的电表、水表装上了"智能眼睛",能随时告诉你哪里在"浪费电&qu…

张小明 2026/1/8 13:47:09 网站建设

怎么讲解网站昆明网站优化公司

收藏和点赞,您的关注是我创作的动力 文章目录概要一、方案设计1.1 总体方案论证1.2 项目总体设计二、软件设计3.1 主程序设计三、软件设计3.3 emWin图形界面实现实物附录2 源程序清单四、 结论五、 文章目录概要 本次课题基于STM32F407微型控制器以及CAN总线通信技术…

张小明 2026/1/8 13:57:09 网站建设