发现有错误、或者理解错误,及时联系我,感谢!!
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 | testB
demo = {
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
// }
}