基本语法
定律:子类 extends 父类 ===》 返回true,返回T类型
语法: type Extract<T,U> = T extends U ? T : never
父子类使用
class People {
public name!:string
public age!:number
public address!:string
eat(){}
}
class ChinesePeople extends People{}
let cp = new ChinesePeople()
//Extract 在子类和父类中的应用
type ext = Extract<ChinesePeople,People>
// 返回的是 ChinesePeople 子类
联合类型使用
type unionType = Extract<string | number,number>
//分解判断
//第一次:string extends number ? T : never 结果 never
//第二次:number extends number ? T : never 结果 number
函数类型使用
type func1 = (one:number,two:string) => string
type func2 = (one:number) => string
type ext1 = Extract<func1,func2> //返回 never
type ext2 = Extract<func2,func1> //返回 (one:number) => string
函数泛型约束: 函数类型上的泛型约束,参数类型和返回值完全相同的情况下,参数少的函数类型 extends 参数多的函数类型 返回true