当前位置:网站首页>TypeScript-键盘映射

TypeScript-键盘映射

2022-06-11 07:54:00 YY小怪兽

1.什么是映射类型?
根据旧的类型创建出新的类型, 我们称之为映射类型
我们可以通过+/-来指定添加还是删除 只读和可选修饰符

interface TestInterface1{
    
    name:string,
    age:number
}
interface TestInterface2{
    
    readonly name?:string,
    readonly age?:number
}
type ReadonlyTestInterface<T> = {
    
    // [P in keyof T]作用: 遍历出指定类型所有的key, 添加到当前对象上
    // readonly [P in keyof T]: T[P]
    // readonly [P in keyof T]?: T[P]
    -readonly [P in keyof T]-?: T[P]
}
//将TestInterface2取消只读和可选
//type MyType ={
    
// name:string,
// age:number
//}
type MyType = ReadonlyTestInterface<TestInterface2>

2.由于生成只读属性和可选属性比较常用, 所以TS内部已经给我们提供了现成的实现

/*只读 type MyType2 = { readonly name:string, readonly age:number } */
type MyType2 = Readonly<TestInterface1>


/*可选 type MyType3 = { name?:string, age?:number } */
type MyType3 = Partial<TestInterface1>



/*只读可选 MyType4 ={ readonly name?:string, readonly age?:number } */
type MyType4 = Partial<Readonly<TestInterface1>>

3.Pick映射类型
将原有类型中的部分内容映射到新类型中

interface TestInterface {
    
    name:string,
    age:number
}
/*type MyType = { name:string, */
type MyType = Pick<TestInterface, 'name'>

4.Record映射类型
他会将一个类型的所有属性值都映射到另一个类型上并创造一个新的类型

type Animal = 'person' | 'dog' | 'cat';
interface TestInterface {
    
    name:string;
    age:number;
}
type MyType = Record<Animal, TestInterface>
/*type MyType ={ person:TestInterface, dog:TestInterface, cat:TestInterface } */
let res:MyType = {
    
    person:{
    
        name:'zs',
        age:18
    },
    dog:{
    
        name:'wc',
        age:3
    },
    cat:{
    
        name:'mm',
        age:2
    }
}

原网站

版权声明
本文为[YY小怪兽]所创,转载请带上原文链接,感谢
https://blog.csdn.net/lihui61357457/article/details/125167686