typescript 的常用方式

文章目录

  • 前言
  • 一、绑定props 默认值的方式:withDefaults
    • 1.vue2 的props设置默认值
    • 2.vue3 的props设置默认值
      • (1) 不设置默认值的写法
      • (2) 设置默认值的写法(分离模式)
      • (3) 设置默认值的写法(组合模式)
  • 二、定义一个二维数组的数据类型
  • 三、一个普通的form表单可能碰到的多层嵌套数据定义类型
    • 重点:


前言

提示:


一、绑定props 默认值的方式:withDefaults

1.vue2 的props设置默认值

 props: {// 基础的类型检查 (`null` 和 `undefined` 会通过任何类型验证)propA: Number,// 多个可能的类型propB: [String, Number],// 必填的字符串propC: {type: String,required: true},// 带有默认值的数字propD: {type: Number,default: 100},// 带有默认值的对象propE: {type: Object,// 对象或数组默认值必须从一个工厂函数获取default: function () {return { message: 'hello' }}},// 自定义验证函数propF: {validator: function (value) {// 这个值必须匹配下列字符串中的一个return ['success', 'warning', 'danger'].indexOf(value) !== -1}}}

2.vue3 的props设置默认值

(1) 不设置默认值的写法

interface Props {name: string,age: number,address: string,
}
const props = defineProps<Props>()

(2) 设置默认值的写法(分离模式)

interface Props {name: string,age: number,address: string,
}
const props =  withDefaults(defineProps<Props>(),{name: '张三',age: 18,address: '中国义务',
})

(3) 设置默认值的写法(组合模式)

const props = withDefaults(defineProps<{ name: string, age?: number address?: string }>(),{name:'张三',age: 18,address:'中国义务',}
);

二、定义一个二维数组的数据类型

比如:级联里面的的[[1],[2],[3]]这种 也就是数组里面嵌套number类型的数组

type numberArray = Array<number>
// ts中定义参数
export function get<T>(params: {levelIds?: Array<numberArray>
}) {}
let levelIds: numberArray[] = ref([[1]]). // vue 中

三、一个普通的form表单可能碰到的多层嵌套数据定义类型

type formType = {value1: string // 定义基本数据类型value2: { key1: string; key2: string }[] // 定义数组里面对象的属性// 数组里面的对象,对象里面是对象的value3: {examTopicRecordId: number // 对象里面的基本数据errorReasonList: [] // 对象里面的数组answers: string[] // 对象里面的字符串数组// 对象里面的对象scoringRecordMap: { // [prop: string]  定义对象的key是string类型的,后面的是对象的属性名[prop: string]: {scoring: string, // 评分errorReason: string[], // 错误原因remark: string, //备注}}}[][key: string]: any // 这是一个索引签名}
const formForm: formType =reactive({...})

重点:

重点1: 属性对象里面的 [prop: string]: {}是索引签名的一种表示方式,用户描述一个对象的索引类型和索引值的类型。
重点2: == [key: string]: any 是索引签名的一中表示方式,它表示这个对象可以有任意名称的属性,这些属性的值可以是任何类型(比如你在formForm中定义了value1,value2,value3以外使用了value4也不会报错,提供了极大的灵活性)==
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

第七十天 APP攻防-微信小程序解包反编译数据抓包APK信息资源提取

第70天 APP攻防-微信小程序&解包反编译&数据抓包&APK信息资源提取 知识点&#xff1a; 0、APK信息资源提取 1、微信小程序致据抓包 2、做信小程序解包反编译 1、信息收集应用8资产提取&权限等 2、漏润发现-反编泽&脱壳&代码审计 3、安全评估组件8散密…

生成音频二维码:点燃听觉体验的魔法之门

在数字时代&#xff0c;创新不断涌现&#xff0c;生成音频二维码作为数字信息传递的新方式&#xff0c;正逐渐引领着一场音频体验的革命。通过融入二维彩虹技术&#xff0c;音频二维码不再只是静态的图形&#xff0c;而是成为一个能够点燃听觉体验的魔法之门&#xff0c;让我们…

MyBatis概述

三层架构 表现层&#xff1a;直接和前端交互&#xff0c;接受AJAX请求&#xff0c;返回json数据业务层&#xff1a;一是处理前端的请求&#xff0c;二是返回持久层获取的数据持久层(数据访问层)&#xff1a;直接操作数据库&#xff0c;完成CRUD&#xff0c;返回数据给业务层 …

MySQL 存储过程批量插入总结

功能需求背景&#xff1a;今天接到产品经理核心业务表的数据压测功能&#xff0c;让我向核心业务表插入百万级的业务量数据&#xff0c;我首先想到的办法就是存储过程实现数据的批量 。 由于无法提供核心业务表&#xff0c;本文仅仅提供我刚刚自己创建的表bds_base_user 表做相…

土壤墒情监测站的工作原理

TH-TS600】土壤湿度监测系统是一种用于实时监测土壤湿度的设备系统&#xff0c;通过多个传感器和数据采集设备组合而成。该系统能够安装在农田、果园、草地等不同类型的土壤中&#xff0c;实时监测土壤的水分含量&#xff0c;并将数据传输到数据采集设备中进行记录和分析。 土…

Node.js基础---npm与包

包 概念&#xff1a;Node.js 中的第三方模块又叫做包 来源&#xff1a;由第三方个人或团队开发出来的&#xff0c;免费使用&#xff0c;且为开源 为什么需要&#xff1a;Node.js的内置模块只有一些底层API&#xff0c;开发效率低 包是基于内置模块封装出来的&#xff0c;提供更…

【MATLAB】 小波分解信号分解+FFT傅里叶频谱变换组合算法

有意向获取代码&#xff0c;请转文末观看代码获取方式~ 展示出图效果 1 小波分解算法 小波分解算法是一种数学方法&#xff0c;用于将信号分解为不同频率的小波成分。这种算法基于小波函数&#xff0c;可以用于信号处理、图像压缩和数据压缩等领域。小波分解算法的基本思想是…

视频学习胜过读书吗

现在&#xff0c;网上的课程视频和讲座视频&#xff0c;越来越多。同样的内容&#xff0c;可以读书学习&#xff0c;也可以视频学习&#xff0c;大家喜欢哪一种&#xff1f; 我比较喜欢读书&#xff0c;实在没耐心视频学习。 书籍只要随手一翻&#xff0c;就知道大概的内容了&…

【活动】前端世界的“祖传代码”探秘:从古老魔法到现代重构

作为一名前端工程师&#xff0c;我时常在项目中邂逅那些被岁月打磨过的“祖传代码”。它们就像古老的魔法书页&#xff0c;用HTML标签堆砌起的城堡、CSS样式表中的炼金术&#xff0c;以及JavaScript早期版本中舞动的符咒。这些代码承载着先驱们的探索精神和独特智慧&#xff0c…

戏说c语言: 阶段性总结二

前言 师弟&#xff1a;“师兄&#xff0c;我终于和我喜欢的女生在一起了。感谢师兄呀。” 我&#xff1a;“恭喜啊&#xff0c;师弟&#xff01;” 师弟&#xff1a;“这要全靠这段学习c的缘分了啊&#xff0c;两个人没事交流c语言&#xff0c;一起去上课&#xff0c;共同成长…

Fastadmin点击搜索赋值给下拉列表

业务场景描述 输入核销码&#xff0c;点击搜索&#xff0c;下拉列表展现出订单的所有项目 实现逻辑&#xff1a; 给add.html的js里面&#xff0c;给搜索按钮绑定单击事件 add: function () {//绑定单机事件$("#ss").click(function(){//点击之后&#xff0c;获取核…

六、OpenAI之嵌入式(Embedding)

嵌入模式 学习怎么将文本转换成数字&#xff0c;解锁搜索等案例。 新的嵌入模型 text-embedding-3-small 和 text-embedding-3-large&#xff0c;是目前最新的并且性能最好的嵌入模型&#xff0c;成本低&#xff0c;支持多语言&#xff0c;拥有控制所有大小的新参数 1. 什么是…