export default {} // Required<Type> // 构建一个由 Type 的所有属性组成的类型,设置为必填。与 Partial 相反 interface IPerson { name?: string; age?: number; } let res: IPerson = { name: "舒畅" } let res2: Required<IPerson> = { name: "舒畅", age: 18 } // Omit<Type, Keys> // Exclude // 通过从 Type 中选取所有属性,然后删除 Keys (属性名或属性名的联合)来构造一个类型。 interface Student { name: string; age: number; score: number; sex: boolean } type SProps = Omit<Student, "name"> let res3: SProps = { age: 19, score: 100, sex: false } // OmitThisParameter // 从类型T中剔除this参数类型,并构造一个 新类型 function add(x: number): void { console.log(x); } function f0(this: object, x: number) {} function f1(x: number) {} // (x: number) => void type T0 = OmitThisParameter<typeof f0> // (x: number) => void type T1 = OmitThisParameter<typeof f1> // string type T2 = OmitThisParameter<string> const x: T0 = add; const y: T1 = add; const z: T2 = "江疏影"; console.log(x); console.log(y); console.log(z);