加深我对typeScript的印象(、

编程入门 行业动态 更新时间:2024-10-25 21:32:22

加深<a href=https://www.elefans.com/category/jswz/34/1770129.html style=我对typeScript的印象(、"/>

加深我对typeScript的印象(、

发现有错误、或者理解错误,及时联系我,感谢!!

文章目录

    • 1、‘&’符号
    • 2、‘|’符号
    • 3、‘‘Partial’’
    • 4、‘Required’
    • 5、‘Pick’
    • 6、 ‘Omit’

testA、testB、testC是我下面要用到的类

type testA = {name: string,age: number
}type testB = {name: string,sex: number
}type testC = {name: string,address?: string
}

1、‘&’符号

‘&’表示合并两个类型

//此时的demo类型就是testA 与 testB的合并类型
let demo:testA & testB//没问题,
demo = {
name:'tjq',
age:18,
sex:1
}//报错,因为此时没有sex字段
demo = {
name:'tjq',
age:18,
}//倘如testB修改为
type testB = {
name:number,
sex:number
}
//由于testB和testA共同存在name属性,并且name属性类型不同,n合并后name属性会变成never类型(报错)

2、‘|’符号

{// ‘|’ 此时b的类型表示要么满足testA的类型、要么满足testB的类型,或者两种都满足let demo: testA | testBdemo = {name: '123',sex: 2}demo = {name: "123",age: 18,sex: 1}}

3、‘‘Partial’’

//‘Partial’这个关键字表示将某个类的所有属性全部转为可选
let demo: Partial<testA>//demo不进行赋值,没问题
demo = {
}
//demo仅赋值一个name属性,没问题
demo = {
name:"tjq"
}

4、‘Required’

//‘Required’这个同‘Partial’恰恰相反,这个关键字是将类的所有属性转为必填
let demo:Required<testC>
//没问题
demo = {
name:"tjq",
address:"NanJing"
}
//报错,本身address是可选的,但是通过‘Required’转为了必填
demo = {
name:"tjq",
}

5、‘Pick’

//‘Pick’ 表示过滤出一个属性   pick<type,key>,从type参数里面"挑选出"key的类型let demo: Pick<testA, "name">demo = {name: 'tjq',}// 报错,age类型已经被‘Pick’过滤// demo = {//     name: 'tjq',//     age:18// }let demo2: Pick<testA, keyof testA>demo2 = {name: "tjq",age: 18}

6、 ‘Omit’

{//  ‘Omit’   表示过滤出一个属性   Omit<type,key>,从type参数里面”去掉“key的类型let demo: Omit<testA, keyof testB>demo = {age: 18}// 报错,name类型已经被‘Omit’过滤// demo = {//     name: 'tjq',//     age:18// }
}

更多推荐

加深我对typeScript的印象(、

本文发布于:2023-12-06 08:20:24,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1666994.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:我对   印象   typeScript

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!