🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
[TOC] ## Partial 属性可选 将类型定义的所有属性都修改为可选。 ``` type Coord = Partial<Record<'x' | 'y', number>>; // 等同于 type Coord = { x?: number; y?: number; } ``` ## Required 属性必填 ``` type Coord = Required<{ x: number, y?:number }>; // 等同于 type Coord = { x: number; y: number; } ``` ## Readonly 属性只读 不管是从字面意思,还是定义上都很好理解:将所有属性定义为自读。 ``` // 等同于 type Coord = { readonly x: number; readonly y: number; } // 如果进行了修改,则会报错: const c: Coord = { x: 1, y: 1 }; c.x = 2; // Error: Cannot assign to 'x' because it is a read-only property. ``` ## Pick 从类型定义的属性中,选取指定一组属性,返回一个新的类型定义。 ``` type CoordX = Pick<Coord, 'x'>; // 等用于 type CoordX = { x: number; } ``` ## Exclude 排除一个 联合类型 中指定的子类型: ``` type T0 = Exclude<'a' | 'b' | 'c', 'b'> // 'a' | 'c' type T1 = Exclude<string | number | boolean, boolean> // string | number ``` ## Omit 排除接口中指定的属性 ``` interface I1 { a: number; b: string; c: boolean; } type AC = Omit<I1, 'b'>; // { a:number; c:boolean } type C = Omit<I1, 'a' |'b'> // { c: boolean } ``` ## Parameters 获取函数的全部参数类型,以 元组类型 返回: ``` type F1 = (a: string, b: number) => void; type F1ParamTypes = Parameters(F1); // [string, number] ``` ## ConstructorParameters 只是这里获取的是 构造函数 的全部参数 ``` interface IEntity { count?: () => number } interface IEntityConstructor { new (a: boolean, b: string): IEntity; } class Entity implements IEntity { constructor(a: boolean, b: string) { } } type EntityConstructorParamType = ConstructorParameters<IEntityConstructor>; // [boolean, string] ``` ## ReturnType 接收函数声明,返回函数的返回值类型,如果多个类型则以 联合类型 方式返回 ``` type F1 = () => Date; type F1ReturnType = ReturnType<F1>; // Date ```