首页 > 其他分享 >2022.9.2 - ts笔记

2022.9.2 - ts笔记

时间:2022-09-02 18:35:48浏览次数:72  
标签:string ts 笔记 Record role 2022.9 类型 type id

TypeScript 中的代码清道夫:非空断言操作符

value: {
      type!: Array,
      required: true
    },

类型别名及导入导出,对数组内的对象做限制

// util/type.d.ts
// 类型别名
type RouteMeta = {
  name: string;
  method: string;
  path: string;
  isVerify: boolean;
}
export {
  RouteMeta,
}

// util/router.ts
import { RouteMeta } from './type'
// 对数组内的对象做限制
const app : RouteMeta[] = [
  {
    name: 'string',
    method: 'string',
    path: 'string',
    isVerify: false,
  }
]

Typescript高级类型Record

// type PlainObject = { [P: string]: any };
type PlainObject = Record<string, any>;

定义:

Record<K,T>构造具有给定类型T的一组属性K的类型。在将一个类型的属性映射到另一个类型的属性时,Record非常方便。

示例:

interface EmployeeType {
    id: number
    fullname: string
    role: string
}
 
let employees: Record<number, EmployeeType> = {
    0: { id: 1, fullname: "John Doe", role: "Designer" },
    1: { id: 2, fullname: "Ibrahima Fall", role: "Developer" },
    2: { id: 3, fullname: "Sara Duckson", role: "Developer" },
}

Record的工作方式相对简单。在这里,它期望数字作为类型,属性值的类型是EmployeeType,因此具有idfullNamerole字段的对象。

参考第二篇文章:TypeScript的Record类型说明

高级用法

Record类型可以和其他的工具类型一起使用,可以实现更高级的用法。

type seniorRole = 'manager'
type technicalRole = 'developer'
const benefits: Partial<Record<seniorRole, 'Free Parking'> & Record<technicalRole, 'Free Coffee'>> = {};


benefits.manager = 'Free Parking';
benefits.developer = 'Free Parking';//ERROR: no free parking for dev

通过 RecordPartialIntersection 类型一起工作,此代码创建了一个强类型的benefits对象,并在键和值类型之间建立关联.强类型对象使得在编译时更容易捕获错误,使 IDE 在键入时更容易标记错误,并提供具有自动完成功能的智能提示

标签:string,ts,笔记,Record,role,2022.9,类型,type,id
From: https://www.cnblogs.com/yehuda/p/16650895.html

相关文章

  • 道长的算法笔记:数论基础汇总
    质数判定与筛选给定一个正整数\(N\),如果存在一个数\(T\),T满足\((2\leqT\leqN-1)\)则称\(N\)是一个合数,如果不存在这样这样的因数\(T\),则称\(N\)质数。简单......
  • java学习笔记018 反射
    1.java.lang.Class获取Class对象的四种方式//1Classclazz1=Person.class;//2Personp=newPerson();Classclazz2=p.getClass();//3 用得多Classclazz3=......
  • Python源码学习-Objects类型
    目录简介类型定义类型对象对象操作缓存池本文基于Python3.10.4。简介在python中,有两种类型可以保存bytes(字节)类型的数据。分别是bytes与bytearray。其中bytearray支持修......
  • 地理空间数据库设计学习笔记(不分章)
    平时成绩40%,期末60%.平时成绩=考勤10%+作业20%+课堂表现作业=作业+实验报告C/S架构是什么?C/S架构,即Client/Server(客户端/服务器)架构,是一个典型的两层架构。通过将任务......
  • Vue+Echarts图表自适应
    图表的自适应,挺简单的,但是有几个需要注意的点。1、我们采用addEvenListener()方法,此方法用于向指定元素添加监听事件。且同一元素目标可重复添加,不会覆盖之前相同事件,配合......
  • Excel笔记
    一、基础部分(1)求和=sum()(2)平均数=avg()(3)总数=count()(4)分类汇总(5)字符串截取取字符串左边1个字符=LEFT(B34,1)字符串拼接=CONCATENATE("张三","李四")#......
  • Spring Boot 2.x基础教程:使用 ECharts 绘制各种华丽的数据图表
    通常,这类需求在客户端应用中不太会用到,但是在后端的各种统计分析模块会经常碰到。比如:通过折线图、柱状图、雷达图等可视化形式,更直观的展现和分析经营状况或系统运行情况......
  • ICCV2019_Slimmable:(US-Nets)Universally Slimmable Networks and Improved Training
    Institute:UniversityofIllinoisatUrbana-ChampaignAuthor:JiahuiYu,ThomasHuangGitHub:https://github.com/JiahuiYu/slimmable_networksIntroduction最初......
  • 笔记本小新是raid系统 想还原备份, 放弃 到重装系统
    背景:联想小新17年安装了个win10系统,当时安装好环境,做了个备份**.GHO文件,最近想还原,发现了各种问题。ghost还原发现不了目标盘。深入diskgenius查看,发现是raid模式......
  • C#读取RTSP流并切录制视频
    下载Nuget包:EMGU.CV(测试用版本:4.0.1.3373);publicvoidInitVideo()     {      VideoCapture_capture=newVideoCapture("rtsp://admin:1234......