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也不会报错,提供了极大的灵活性)==
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Java数据结构之ArrayList与顺序表

一.线性表 什么是线性表&#xff0c;字面意思&#xff0c;就是可以连成一条线的表&#xff0c;这里的线可以是物理上的一条线&#xff0c;也可以是逻辑上的一条线 物理上的一条线就是类似于数组&#xff0c;即它在内存上是有一块连续的空间&#xff0c;叫做顺序表&#xff0c…

python 中常用的热门库介绍

阅读本文之前请参阅-----如何系统的自学python Python 是一种非常流行的编程语言&#xff0c;它的一个主要优势是拥有一个庞大的生态系统&#xff0c;其中包括许多强大的库。这些库为各种任务提供了解决方案&#xff0c;从数据分析到机器学习&#xff0c;从网络爬虫到图像处理。…

面试数据库篇(mysql)- 02定位慢查询和分析

定位慢查询 聚合查询多表查询表数据量过大查询深度分页查询表象:页面加载过慢、接口压测响应时间过长(超过1s) 方案一:开源工具 调试工具:Arthas 运维工具:Prometheus 、Skywalking 方案二:MySQL自带慢日志 慢查询日志记录了所有执行时间超过指定参数(long_query_tim…

openstack常用查看命令

1.查看所有虚拟机 nova list2.列举某个虚拟机的详细信息 nova show ID3.获取所有服务列表 nova service-list4.查看镜像列表 glance image-list5.查看虚拟机规格信息 nova flavor-list6.查看网络信息 neutron net-list7.查看虚拟机网卡信息 nova interface-list8.查看vnc…

TCP的三次握手和四次挥手 | 查看网络状态

三次握手和四次挥手是在计算机网络中用于建立和终止TCP连接的协议。这两个过程是TCP协议的重要组成部分&#xff0c;确保数据的可靠传输。 三次握手指的是在客户端和服务器之间建立连接时的步骤。具体流程如下&#xff1a; 客户端向服务器发送一个连接请求报文段&#xff08;…

Promise 介绍与基本使用 - 学习笔记

Promise 介绍与基本使用 1、 Promise 是什么&#xff1f;2、创建 Promise 实例对象3、Promise 实例方法4、Promise 的基本工作流程5、实例方法6、静态方法7、async 和 await7.1、关键字7.2、实例7.3、区别7.4、为什么使用 async/await 比较好&#xff1f; 1、 Promise 是什么&a…

【EI会议征稿通知】2024年第三届生物医学与智能系统国际学术会议(IC-BIS 2024)

2024年第三届生物医学与智能系统国际学术会议&#xff08;IC-BIS 2024&#xff09; 2024 3rd International Conference on Biomedical and Intelligent Systems (IC-BIS 2024) 2024年第三届生物医学与智能系统国际学术会议&#xff08;IC-BIS 2024&#xff09; 将于2024年4月…

皇冠测评:网络电视盒子哪个品牌好?电视盒子排行榜

欢迎各位来到我们的测评频道&#xff0c;本期我们要分享的产品是电视盒子&#xff0c;因很多网友留言不知道网络电视盒子哪个品牌好&#xff0c;我们通过为期一个月的测评后整理了电视盒子排行榜&#xff0c;想买电视盒子的可以看看下面这五款产品&#xff0c;它们各方面表现非…

CSS_实现三角形和聊天气泡框

如何用css画出一个三角形 1、第一步 写一个正常的盒子模型&#xff0c;先给个正方形的div&#xff0c;便于观察&#xff0c;给div设置宽高和背景颜色 <body><div class"box"></div> </body> <style>.box {width: 100px;height: 100px…

如何使用Windows系统电脑无公网ip远程桌面Ubuntu系统

文章目录 前言1. ubuntu安装VNC2. 设置vnc开机启动3. windows 安装VNC viewer连接工具4. 内网穿透4.1 安装cpolar【支持使用一键脚本命令安装】4.2 创建隧道映射4.3 测试公网远程访问 5. 配置固定TCP地址5.1 保留一个固定的公网TCP端口地址5.2 配置固定公网TCP端口地址5.3 测试…

吴恩达机器学习全课程笔记第四篇

目录 前言 P61-P68 激活函数 Softmax算法 P69-P73 Adam算法 更多类型的层 模型评估 P74-P79 偏差和方差 建立表现基准 学习曲线 偏差和方差与神经网络 前言 这是吴恩达机器学习笔记的第四篇&#xff0c;第三篇笔记请见&#xff1a; 吴恩达机器学习全课程笔记第…

leetcode 重复的子字符串

前要推理 以abababab为例&#xff0c;这里最主要的就是根据相等前后缀进行推导 s [ 0123 ] 如 t【 0123 】 f 【01 23 】 后两个分别是前后缀&#xff0c;第一个是总的字符串&#xff0c;然后可以推导 //首先还是算出…

Fastadmin列表根据status或者固定条件来显示按钮的显示和隐藏

根据订单状态&#xff0c;显示“退款操作”按钮显示和隐藏 打开页面的js文件&#xff0c;在操作的这一列里面再加一个button按钮。也可以新起一列&#xff08;我在其他文章有写&#xff09;添加按钮。 row就是选中的这一些所有的数据。 {field: operate, title: __(Operate…

【c++】stack和queue模拟实现

> 作者简介&#xff1a;დ旧言~&#xff0c;目前大二&#xff0c;现在学习Java&#xff0c;c&#xff0c;c&#xff0c;Python等 > 座右铭&#xff1a;松树千年终是朽&#xff0c;槿花一日自为荣。 > 目标&#xff1a;能手撕stack和queue模拟 > 毒鸡汤&#xff1a;…

任务系统之API子任务

日常运维工作中有许多的任务要执行&#xff0c;例如项目发布/数据备份/定时巡检/证书更新/漏洞修复等等&#xff0c;大部分的任务都会有多个步骤共同完成&#xff0c;例如一个发布任务会有拉代码、编译、分发、通知等等步骤&#xff0c;而不同的任务可能还包含相同或相似的步骤…

web前端-html自定义列表

html 自定义列表 <!--有序列表 应用范围&#xff1a;试卷、问答--> <ol><li>Java</li><li>C</li><li>Python</li><li>C</li><li>VB</li> </ol><br><!--无序列表 应用范围&#xff1a…

【粉丝福利第一期】小 明

Q1 - 能否自我介绍下&#xff1f; 嗨&#xff0c;大家好&#xff0c;我是 小 明 &#xff08;小明java问道之路&#xff09;&#xff0c;互联网大厂后端研发专家&#xff0c;2022博客之星TOP3/博客专家/CSDN后端内容合伙人、InfoQ(极客时间)签约作者、阿里云签约博主、全网5万…

Apache Paimon Append Queue表解析

a) 定义 在此模式下&#xff0c;将append table视为由bucket分隔的queue。 同一bucket中的每条record都是严格排序的&#xff0c;流式读取将完全按照写入顺序将record传输到下游。 使用此模式&#xff0c;无需特殊配置&#xff0c;所有数据都将作为queue进入一个bucket&…

单/双通道40V 350mA车规级LDO稳压器高集成电流感应调节

概述 PC8803具有高输入电压单低压差调节器&#xff08;PC8803SC01/PC8803SCO3&#xff09;/双通道低压差调节&#xff08;PC8803SC02/PC8803SC04&#xff09;&#xff0c;具有精确的电流感测&#xff0c;设计用于在宽输入电压范围内工作 从4.5V到40V。该设备具有45V负载转储电…

redis中的分布式锁(setIfAbsent)(expire)

目录 应用场景 代码实例1&#xff1a; 代码实例2&#xff1a; setIfAbsent&#xff1a; expire&#xff1a; 举例说明&#xff1a; 代码实例3&#xff1a; 代码实例4&#xff1a; 还是一个同事问的一个问题&#xff0c;然后闲着没事就记录下来了。多人操作同一个保单&a…