TypeScript与vue

news2024/9/21 16:27:40

一、为组件的props标注类型

        - 在没有使用TS之前,是这样接受props:

                

        - 在TS环境中,是这样接受props:

                

        - 对于props的可选项如何限制呢?

                1、类型限制

                        类型限制在接收的时候就已经定义好了

                                

                2、可选属性(必填限制)

                        必填限制其实就是在接口中定义可选属性即可

                                

                3、默认值限制

                        使用 withDefaults 完成默认值的配置

                                

二、为组件的emits标注类型

        - 在没有使用TS之前,是这样接收自定义事件:

                

        - 在TS环境中,是这样接收emits:

                接收的自定义函数的返回值一般结束void

                

        - 不过在 vue3.3+版本中,事件的定义可以写成:

                

三、为ref()标注类型

         - 没有显示定制类型约束时,TS对根据初始值推导ref类型:

                

        - 但是,如果想显示的约束ref的类型,那么需要使用vue提供的一个 Ref 接口完成

                

        - 除了定制Ref约束以外,还可以直接在ref方法中使用泛型来 约束ref的类型

                

        其实最终的结果也是使用了Ref接口约束

四、为reactive()标注类型

        - 没有显示定制类型约束时,TS会根据初始值推导reactive()类型:

                

        - 当然,也可以显示的约束衣一个reactive()的类型

                

五、为computed()标注类型

        - computed()会自动根据返回值推导出类型

                           ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        

        - 当然,也可以通过泛型显示的约束一个computed()的类型

                

六、为时间处理程序标注类型

        在处理业务时,可能需要用到DOM对象,这时,可能会有错误报出:

               

        TS会将事件对象的类型默认赋值成any

        为了解决这个问题,可以将事件对象的类型进行指定

                

        并且,通过类型断言解决DOM对象类型不正确的问题:

                

七、为provide/inject标注类型

        provide和inject通常会在不同的组件中运行,要正确地为注入的值标记类型,vue提供了一个InjectionKey 接口,它是一个继承自Symbol 的泛型类型,可以用来在提供者和消费者之间同步注入值的类型

                - 先做准备工作

                        因为key的类型的symbol,所以建议把key独立到单独的TS文件中

                        

                - 提供方

                        

                - 接收方

                        

                接受的数据有类型约束,但是同时多了一个undefined类型,原因就是inject接受的数据不一定被提供了,所以,赋值一个默认值就可以解决

        当不使用symbol类型做为key时,InjectionKey 接口也就没用了,那么现在是无法约束提供方的数据类型,只能在接收方约束一下类型而已

                - 提供方

                       

                - 接收方

                        

                在没有做约束之前,inject值为unknow,值需要通过泛型约束一下inject值即可

                        

                同样的道理,undefined可以通过设置默认值抵掉

八、为模版引用标注类型

        所谓的为模版引用标注类型其实就是当使用ref属性来获取一个DOM对象时,如何约束DOM对象的类型

        看一个需求,比如你的组件中有一个img标签,你想修改img标签的src属性:

                

        ?.的目的是解决logo.value可能为空的问题,但是它还是会报“nerver上不存在src” 错误,原因就是TS不知道你当前获取到的DOM对象时什么类型!

        解决办法:

                通过泛型确定ref值的类型,这样就可以使用src属性了

                

九、为组件引用标注类型

                - 定制一个子组件

                        

                - 在父组件中使用子组件

                        

                - 尝试使用子组件的属性或者方法

                        

                会发现,使用子组件实例,不会有任何提示

                - 解决使用组件实例没有提示的问题

                        为了获取 MyModal 的类型,我们首先需要通过 typeof 得到其类型,再使用 TypeScript  内置的 InstanceType 工具类型来获取其实例类型

                                

十、补充一个小知识点

        ?.运算符,表示如果有则继续,没有就返回 undefined

        在TS中还有一个运算符 !

        !是非空断言,就是当你访问一个对象的属性时,这个对象有可能是空(null),但是你加上!之后就算是空的也不报错,但是,程序改是错就还是错的。

        - ref = ‘logo’ 的img标签已经删除,所以logo.value为空,访问src属性就会报错

                

        - 但是当使用非空断言之后

                

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2095266.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

华媒舍:8个为什么要选择国外纳斯达克大屏推广的原因

1.纳斯达克大屏的知名度和美誉度纳斯达克大屏是全球有名气的金融业信息表明平台之一,它在全球金融体系有着广泛的知名度和美誉度。以在纳斯达克大屏中进行推广,能够让更多人关注与掌握推广具体内容,从而增加品牌曝光率。 2.纳斯达克大屏高客流…

代码随想录Day 31|leetcode题目:56.合并区间、738.单调递增的数字、968.监控二叉树

提示:DDU,供自己复习使用。欢迎大家前来讨论~ 文章目录 贪心算法Part05题目题目一:56. 合并区间解题思路 题目二:738.单调递增的数字解题思路:暴力解法:结果超时贪心算法 题目三: 968.监控二叉…

今日早报 每日精选15条新闻简报 每天一分钟 知晓天下事 9月1日,星期日

每天一分钟,知晓天下事! 2024年9月1日 星期日 农历七月廿九 1、 未来一周,四川东部、重庆等地持续高温天气,最高气温可达40~42℃。 2、 山西明确:今日起,职工医保个人账户家庭共济范围由直系亲…

QNN:基于QNN+example重构之后的yolov8det部署

QNN是高通发布的神经网络推理引擎,是SNPE的升级版,其主要功能是: 完成从Pytorch/TensorFlow/Keras/Onnx等神经网络框架到高通计算平台的模型转换; 完成模型的低比特量化(int8),使其能够运行在高…

干货分享|分享一款实用的网盘图标删除器 Drive Icon Manager v2.2

问题:在Windows平台“此电脑”及“资源管理器侧边栏”中会出现各种第三方图标,如百度网盘、WPS网盘、迅雷下载。 Drive Icon Manager 下载方法 1.打开下面网址--选择最新版本进行下载GitHub - Return-Log/Drive-Icon-Manager: 可以轻松删除‘此电脑’及‘…

基于SSM+小程序的宿舍管理系统(宿舍1)(源码+sql脚本+视频导入教程+文档)

👉文末查看项目功能视频演示获取源码sql脚本视频导入教程视频 1 、功能描述 本宿舍管理系统小程序有管理员和学生两个角色。 1、管理员功能有个人中心,公告信息管理,班级管理,学生管理,宿舍信息管理,宿舍…

算法——支持向量机(support vector machines,SVM)

简介:个人学习分享,如有错误,欢迎批评指正 支持向量机(Support Vector Machine, SVM)是一种监督学习算法,广泛用于分类任务,也可以用于回归和异常检测等问题。SVM的核心思想是通过在特征空间中找…

单片机内存区域划分

目录 一、C 语言内存分区1、栈区2、堆区3、全局区(静态区)4、常量区5、代码区6、总结 二、单片机存储分配1、存储器1.1 RAM1.2 ROM1.3 Flash Memory1.4 不同数据的存放位置 2、程序占用内存大小 一、C 语言内存分区 C 语言在内存中一共分为如下几个区域…

高效达人必备!Simple Sticky Notes让灵感与任务不再遗漏!

前言 阿尔伯特爱因斯坦所言:“我们不能用制造问题时的同一水平思维来解决它。”这句话深刻地揭示了创新与突破的必要性。正是基于这样的理念,Simple Sticky Notes这款桌面便签软件以其独特的创新视角和实用性,在众多同类软件中脱颖而出。 它…

【原型设计工具评测】Axure、Figma、Sketch三强争霸

在当今的数字化设计领域,选择合适的原型设计工具对于项目的成功至关重要。Axure、Figma 和 Sketch 是目前市场上最受欢迎的三款原型设计工具,它们各具特色,满足了不同用户的需求。本文将对这三款工具进行详细的对比评测,帮助设计师…

Fine-Grained Egocentric Hand-Object(中文翻译)

精细化自我中心手-物体分割: 数据集、模型(model)与应用 灵芝张1, 盛昊周1, 西蒙斯滕特 $ {}^{2} $, 和健博石 $ {}^{1} $ 摘要。 自我中心视频提供了高保真度建模人类行为的细粒度信息。手和交互对象是理解观众行为和意图的一个关键方面。…

Pandas 10-绘制饼图

1. 准备数据 首先,需要准备一个DataFrame。 import pandas as pd# 创建一个DataFrame data {Category: [A, B, C, D],Value: [15, 30, 45, 10] }df pd.DataFrame(data) print(df)输出: Category Value 0 A 15 1 B 30 2 …

职称评审汇报ppt模板_副教授教学科研型职称答辩ppt制作案例

副教授教学科研型职称答辩ppt制作案例 专业技术职务评聘述职报告PPT制作案例 PPT项目概要: 项目名称:专业技术职务评聘述职报告PPT 项目单位:浙江X大学 制作需求:PPTX 制作方式:线上沟通 专业技术职务聘任申报人汇…

【战术数据链】Link 22 - 已准备好投入使用

Link 22,又称北约改进型 Link Eleven (NILE),是一种战术数据链通信标准。新标准计划在中期内取代广泛使用的 Link 11,并将与 Link 16 同时使用。 就数字海军通信而言,战术数据链尤为重要。北约和盟国海军使用 Link 11 协议&#…

初始MYSQL数据库(1)——创建、删除数据库和数据表的相关操作

找往期文章包括但不限于本期文章中不懂的知识点: 个人主页:我要学编程(ಥ_ಥ)-CSDN博客 所属专栏: MYSQL 目录 数据库的概念 数据库的相关操作 常用的数据类型 数值型 字符串类型 日期类型 数据表的相关操作 练习 数据库的概念 数…

C++20中lambda表达式新增加支持的features

1.弃用通过[]隐式捕获this&#xff0c;应使用[,this]或[,*this]显示捕获&#xff1a; namespace { struct Foo {int x{ 1 };void print(){//auto change1 [] { // badauto change1 [, this] { // good, this: referencethis->x 11;};change1();std::cout << "…

【进程间通信】匿名管道

1.进程间通信的介绍 是什么 为什么 怎么做 匿名管道 原理 特征 管道的四种情况可以写代码自己看看 管道接口 编码实现 父进程进行读&#xff0c;子进程进行写 里面有snprintf的使用 #include<iostream> #include<unistd.h> #include<stdlib.h> #i…

力扣435-无重叠区间(Java详细题解)

题目链接&#xff1a;435. 无重叠区间 - 力扣&#xff08;LeetCode&#xff09; 前情提要&#xff1a; 因为本人最近都来刷贪心类的题目所以该题就默认用贪心方法来做。 贪心方法&#xff1a;局部最优推出全局最优。 如果一个题你觉得可以用局部最优推出全局最优&#xff0…

祝贺 | 武汉大学生命科学学院孙蒙祥教授课题组时隔三年再发Nature

公众号&#xff1a;生信漫谈&#xff0c;获取最新科研信息&#xff01; 祝贺 | 武汉大学生命科学学院孙蒙祥教授课题组时隔三年再发Naturehttps://mp.weixin.qq.com/s?__bizMzkwNjQyNTUwMw&mid2247487136&idx1&sn9d65a5f18c7b5131800446bcbba7fa06&chksmc0e9…

计算之魂:持续于正确的因果链(一)

文章目录 引言25 人赛跑比赛过程模拟演示 BB84 量子密钥分发&#xff08;量子通信&#xff09;协议模拟图形化演示 BB84 协议过程BB84 协议优势应用场景 结语 引言 如果你只有一杆 100 年前的毛瑟枪&#xff0c;能够打中目标只能靠天分&#xff0c;如果你有一杆最先进的狙击步…