版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
《通信软件前端开发》vue3setup中TypeScript类型定义之变量与函数课程导入//案例A:无类型定义constdata=ref({})constupdateData=(newData)=>{data.value=newDataconsole.log(data.value.user?.name)//可能会报错}
//案例B:有类型定义interfaceUserData{id:numbername:stringage:number}constdata=ref<UserData>({id:1,name:'张三',age:25})constupdateData=(newData:UserData):void=>{data.value=newDataconsole.log()//安全访问}
变量类型//字符串类型letusername:string='张三'//数字类型letage:number=25//布尔类型letisVIP:boolean=true//null和undefinedletdata:null=nullletnotDefined:undefined=undefined基础类型
变量类型//TS自动推导为stringletusername='张三'//鼠标悬停显示:letusername:string//TS自动推导为numberletage=25//letage:number//TS自动推导为booleanletisVIP=false//letisVIP:boolean//数组类型推导letscores=[90,85,95]//letscores:number[]类型自动推导
变量类型//可能是字符串或数字letid:string|numberid='user_001'//✅正确id=1001//✅正确id=true//❌报错:布尔类型不允许//可能是数组或nulllettags:string[]|null=nulltags=['vue','ts']//✅可以赋值数组联合类型
变量类型//定义用户接口interfaceUser{id:numberusername:stringage?:number//可选属性
readonlycreateTime:Date//只读属性}//使用接口letuser:User={id:1,username:'张三',createTime:newDate()}user.id=2//✅可以修改user.createTime=newDate()//❌报错:只读属性不能修改对象类型接口
响应式API类型<scriptsetuplang="ts">import{ref}from'vue'//写法1:类型推导(推荐)constcount=ref(0)//Ref<number>constmessage=ref('hello')//Ref<string>//写法2:泛型指定(联合类型时必需)constdata=ref<string|null>(null)//后续可以赋值data.value='现在有数据了'//✅data.value=null//✅ref的类型定义
//写法3:复杂类型interfaceTodo{id:numbertitle:string}consttodo=ref<Todo>({id:1,title:'学习TS'})</script>
响应式API类型<scriptsetuplang="ts">import{reactive}from'vue'//错误示范❌//reactive<number>(0)//报错!reactive只能接收对象//正确用法1:内联类型conststate=reactive<{name:string;age:number}>({name:'李四',age:20})reactive的类型定义
//正确用法2:复用接口(推荐)interfaceUser{name:stringage:numberemail?:string}constuser=reactive<User>({name:'王五',age:25})//后续可以添加可选属性user.email='wang@'</script>
函数类型//基础参数functiongreet(name:string){return`Hello,${name}`}greet('张三')//✅greet(123)//❌参数类型错误//多参数functionregister(id:number,name:string,age?:number){//age是可选参数
console.log(id,name,age)}register(1,'张三')//✅age可选register(2,'李四',25)//✅参数类型定义
函数类型//方式1:显式标注(清晰明了)functionadd(a:number,b:number):number{returna+b}//方式2:类型推导(简洁)functionmultiply(a:number,b:number){returna*b//TS自动推导返回number}//无返回值用voidfunctionlogMessage(msg:string):void{console.log(msg)//没有return语句}返回值类型定义
void和undefined的区别:void函数没有返回值;undefined函数返回undefined函数类型//定义函数类型别名typeCallbackFn=(error:Error|null,data:any)=>void//定义处理函数typeUserHandler=(user:User)=>Promise<void>//使用示例functionfetchData(callback:CallbackFn){try{constdata={id:1,name:'张三'}callback(null,data)}catch(err){callback(err,null)}}//在组件中使用consthandleUser:UserHandler=async(user)=>{console.log('处理用户:',)}函数类型别名
类型优先:先定义接口,后写逻辑推导优先:能推导的不注解,需约束的用泛型安全优先:可选参数用?,联合类型用|,只读属性用readonly课堂总结├──
📌
变量类型│
├──
🔹
类型注解:letname:string='张三'│
├──
🔹
类型推导:letage=25//number│
├──
🔹
联合类型:letid:string|number│
└──
🔹
接口对象:interfaceUser{...}├──
📌
响应式类型│
├──
🔹ref:基础类型/联合类型用泛型│
└──
🔹reactiv
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 高效能人脉经营与管理技巧手册
- 环保始于心落实于行小学主题班会课件
- 珠宝行业门店销售顾问销售能力及客户服务水平KPI考核表
- 请求提前支付定金的催促函(5篇)
- 阅读分享书香校园小学主题班会课件
- 2026年企业信用风险管理方法(3篇)范文
- 关于年度环保责任报告的通知函(7篇)
- 幼儿园一日生活安排与安全管理方案
- 产品设计团队成员绩效评估表
- 石油开采项目组工作效率与成本控制绩效评定表
- 2026年国企中层干部竞聘笔考试题与答案
- 2026年演出经纪人考试题库及答案(真题)
- 2026年广西壮族自治区南宁市公安招聘辅警考试真题及答案
- 2026江苏苏州市相城区人民检察院招聘编外人员3人笔试题库及答案详解(新)
- 2026年生产文员测试题及答案
- 2026年全国执业兽医资格证考试题库带答案详解(完整版)
- 2026中国氢能储运装备安全标准与国际对标报告
- 2026年学法减分题库和答案
- 乡镇(街道功能区)党政领导干部离任经济事项交接表(开发区和园区适用本表-修订)
- 第一单元 文明的产生和古代亚非文明知识点提纲-2026-2027学年统编版九年级历史上册
- 2025年四川省公开遴选公务员笔试(案例分析)试题及答案
评论
0/150
提交评论