Partial
部分类型
interface User{
id: string;
name: string;
}
const user:Partial<User> ={
// 此时就可以不传id
name: 'ming'
}
Required
必填类型
interface User{
id?: string;
name: string;
}
const user:Required<User> ={
// 此时就会因为缺少id报错
// ts报错:Property 'id' is missing in type '{ name: string; }' but required in type 'Required<User>'.(2741)
name: 'ming'
}
Readonly
只读类型
interface User{
id?: string;
name: string;
}
const user:Readonly<User> ={
name: 'ming'
}
user.name = 'ggg' // 因为是只读,所以不能修改
// ts报错:Cannot assign to 'name' because it is a read-only property.(2540)
Exclude
排除类型
type Dir = "东" | "南" | "西" | "北"
type Dir2 = Exclude<Dir, '北'>
// 此时 type Dir2 = "东" | "南" | "西"
Extract
提取类型
type Dir = "东" | "南" | "西" | "北"
type Dir3 = Extract<Dir, '东' | '西'>
// 此时 type Dir3 = "东" | "西"
Pick
提取key类型
interface User{
id: string;
name: string;
age:number;
}
type user1 = Pick<User,'id'|'name'>
// 此时 type user1 = {id:string; name:string}
Omit
排除key类型
interface User{
id: string;
name: string;
age:number;
}
type user1 = Omit<User,'id'|'name'>
// 此时 type user1 = {age:number}
ReturnType
返回值类型
function f(a:number, b:number){
return 'a+b'
}
type A = ReturnType<typeof f>