当前位置: 首页 > news >正文

ts的一些用法

1.交叉类型 &  ---多个类型属性的集合

   1.1类型别名实现

type Person ={name:string}
type Children = Person & {age:number}
let  newPerson:Children = {// name:'hahah',name:'hhaah',age:18
}

1.2 接口类型实现

interface Inter1{name:string
}
interface Inter2{name:string;age:number;
}
type Inter3 = Inter1 & Inter2

*** 注意:如果交叉类型中 出现相同属性,但类型不同 ,例如name,Children中的name就会出string & number类型 ,但这种类型不存在,就会是报错说是never类型

2.联合类型 |  --- 定义变量的类型可以为多种类型中的一种

let nameBasc: string | number
nameBasc = 'hahah'

3.字面量类型  --- 定义的变量只能是类型中的某个值

type Direction = 'name'|'age' | 'sex'
let string:Direction = 'name'

字面量类型 VS 联合类型   

字面量类型,是来约束取值的,取值只能取定义的值增中的某一个,联合类型,是来约束类型的,取值可以为多种类型中的一种

4. 索引类型 keyof

let obj ={name:'zlz',age:18,sex:'男'
}
function getValues< T,K extends keyof T >(obj: T, keys:K[]): T[K][] {// console.log(33,keys,obj[keys[0]])return keys.map(key => obj[key])
}console.log(getValues(obj,['name']))

5.内置工具映射类型

interface Obj {name:string;age:number;
}

  1.Partial ->可选类型

    type obj1 = Partial<Obj>

2.Required ->必选

type obj2 = Required<Obj>

3.Readonly ->只读的

type obj3 = Readonly<Obj>

4.Pick ->摘取某项 K extends keyof T

type obj4 = Pick<Obj,'name'>

5.Record ->定义key,value 类型

type obj5 = Record<string,number>

http://www.lryc.cn/news/44105.html

相关文章:

  • 云计算面试总结
  • (DP)买不到的数目【蓝桥杯】(裴蜀定理)
  • Docker使用DockerFile部署Go项目
  • C++ Primer第五版_第七章习题答案(31~40)
  • 基于springboot实现学生成绩管理系统【源码+论文】分享
  • Linux diff 命令
  • unity动画状态机
  • 溯源(五)之攻击源的获取
  • 【redis】redis淘汰策略
  • 指针和数组(二)
  • Linux WIFI 驱动实验
  • UART驱动情景分析-write
  • Metasploit入门到高级【第四章】
  • java 继承super
  • Java学习笔记——多态
  • Python处理JSON数据
  • JVM信息查询命令
  • redis 面试题
  • SpringCloud微服务技术栈.黑马跟学(十二)
  • HashMap集合存储学生对象并遍历
  • “提效”|教你用ChatGPT玩数据
  • https://app.hackthebox.com/machines/Inject
  • Java Web 实战 15 - 计算机网络之网络编程套接字
  • 基于pdf2docx模块Python实现批量将PDF转Word文档(安装+完整代码教程)
  • 3.21~3.22
  • Chromium 改造实录:增加 MPEG TS 格式支持
  • 性能优化之-事件代理
  • MSDS 即化学品安全说明书
  • 真人手办没法实现网购?我有一个好办法!
  • 2019湖南省大学生程序设计竞赛题解(D)