Typescript IIMT 模式

今天学习 TypeScript 的一种新的转换类型操作:索引映射类型——IIMT(Immediately Indexed Mapped Type)

这个类型特别有意思,我们先看一个示例:

type Tuple = [1, true, 'false']

type List = Tuple[number]
  • 上面代码先创建了一个元组 Tuple。
  • 然后通过 number 进行索引访问

得到的 List 为:

type List = 1 | true | 'false'

可以发现上面操作 通过索引映射,将操作类型转为了联合类型

如果是对象类型呢?

type Person = {
   
	name: string
  age: number
}

type GetValueType = {
   
  [K in keyof Person]: Person[K]
}[keyof Person]

通过上面的转换,我们得到一个新的类型:

type GetValueType = string | number

如果说我们想根据 Person 类型创建一个新的类型,其结构为:

/**
 * | {
 *     key: string;
 *   } | {
 *     key: number;
 *   }
 * 
 */

修改 GetValueType:

type GetValueType = {
   
  [K in keyof Person]: {
   
		key: Person[K]
  }
}[
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值