UNPKG

type-tls

Version:

type-tls 封装了与类型相关的工具,比如:获取数据的类型 或 类型名字、判断数据的类型 等

56 lines (55 loc) 1.89 kB
import { AnyFunction } from "./function"; /** * 获取对象的方法的某个参数的类型 * * @typeParam Obj - 对象 * @typeParam Method - 对象方法的名字 * @typeParam ParamIndex - 参数的索引个数 */ export type MethodParams<Obj, Method extends keyof Obj, ParamIndex extends number> = Obj[Method] extends AnyFunction ? Parameters<Obj[Method]>[ParamIndex] : never; /** * 获取对象的方法的返回的类型 * * @typeParam Obj - 对象 * @typeParam Method - 对象方法的名字 */ export type MethodReturnType<Obj, Method extends keyof Obj> = Obj[Method] extends AnyFunction ? ReturnType<Obj[Method]> : never; /** * 获取数组元素的类型 * @typeParam Arr 数组 */ export type ArrayItemType<Arr> = Arr extends (infer Item)[] ? Item : never; /** * 格式化为数组格式 * @remarks * 如果 ItemOrArray 是数组,则保持不变 * 如果 ItemOrArray 不是数组,则转为数组类型 ItemOrArray[] */ export type FormatAsArray<ItemOrArray> = ItemOrArray extends any[] ? ItemOrArray : ItemOrArray[]; /** * 格式化为数组格式 * @remarks * 如果 value 是数组,则保持不变 * 如果 value 不是数组,则转为数组类型 * @param value * @returns */ export declare function formatAsArray<V>(value: V): FormatAsArray<V>; /** * 格式化对象成员为数组格式 * @remarks * 如果 成员 是数组,则保持不变 * 如果 成员 不是数组,则转为数组类型 */ export type FormatMemberAsArray<D> = { [K in keyof D]: FormatAsArray<D[K]>; }; /** * 格式化对象成员为数组格式 * @remarks * 如果 成员 是数组,则保持不变 * 如果 成员 不是数组,则转为数组类型 * * @returns 返回来的 data 对象,此方法会改变原对象 data,耗会生成新的对象 */ export declare function formatMemberAsArray<D extends {}>(data: D): FormatMemberAsArray<D>;