TypeScript中的映射类型

映射类型

基于就类型创建新类型(对象类型)
映射类型十基于索引签名类型的,所以,该语法类似于索引签名类型,也使用[ ]
key in PropKeys 表示key可以是PropKeys联合类型中的任意一个,类似于for in

注: 映射类型只能在类型别名中使用们不能在接口中使用

type PropsKeys = 'a' | 'b' | 'c'
// interface Type1 {
//     [Key in PropsKeys]:number //映射类型只能在类型别名中使用们不能在接口中使用
// }
type Type2 = {
    [Key in PropsKeys]: number
}
/**
 * type Type2 = {
 *  a: number;
 *  b: number;
 *  c: number;
 * }
 */

映射类型除了根据联合类型创建新类型外,还可以根据对象类型来创建
keyof 获取对象类型中的key

type PropsKeys1 = {
    label: string
    value: number
}
type Type3 = {
    [Key in keyof PropsKeys1]: number
}
/**
 * type Type3 = {
 *  label: number;
 *  value: number;
 * }
 */

Partial的实现方式

基于映射类型实现的
T[P] 表似乎获取T中每个键对应的类型

  type Partial<T> = {
     [P in keyof T]?: T[P];
 };

索引查询(访问)类型

索引查询(访问)类型
用来查询属性的类型
T[key]

type Props4 = {
    name: string
    age: number
}


// Props4['age'] // 直接这么写是不可以的,这样表示有一个对象叫做Props4 实际需要的是他的类型
let myAge: Props4['age'] = 18

同时查询多个索引的类型

注:如果其中有相同类型 那么会自动去重

type Props5 = {
    a: number
    b: string
    c: boolean
}
let mp11: Props5['a' | 'b'] //let mp11: string | number
let mp22: Props5[keyof Props5] //let mp22: string | number | boolean
// keyof Props5 = 'a' | 'b' | 'c'
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值