映射类型:基于旧类型创建新类型(对象类型),减少重复,提升开发效率
联合类型
栗子:
// 联合类型
type PropKeys = 'x' | 'y' | 'z'
type Type1 = { x: number; y: number; z: number } // 传统写法
// 映射类型 当类型PropKeys 有改变时, 映射的类型也会跟着改变
type Type2 = { [key in PropKeys]: number }
解释:
- 映射类型是基于索引签名类型的,所以语法比较相似
[] [key in PropKeys]表示key 可以是PropKeys中的任意一个映射类型只可以在类型别名中使用,不能在接口中使用
对象类型
需要配合keyof使用
type Props = { a: number; b: number; c: number }
type Type3 = { [key in keyof Props]: number }
解释:
- 首先执行keyof,获取到对象类型Props中所有键的联合类型。
'a'|'b'|'c' - 然后执行 key in ...就表示key 可以时Props键名称中的任意一个