export * from "./curry" export * from "./others" /** * 根据一个联合string类型K, 创建一个Record, 参数里keys的每个值都将对应一个{} */ export function createEmptyRecord(keys: ReadonlyArray): Record { const result = {} as Record keys.forEach(k => (result[k] = {})) return result } /** * 在一个Record里找到指定key, 找到则返回对应的值, 找不到则创建一个{},并将其赋值给Record对应的key,并返回 */ export function getOrInitEmpty(r: Record, key: K): V { let result = r[key] if (result === undefined) { result = {} as V r[key] = result } return result } export function getOrInitEmptyArray(r: Record, key: K): V[] { let result = r[key] if (result === undefined) { result = [] r[key] = result } return result } //@ts-ignore export function checkHasKey(t: T, s: string): s is keyof T { return s in t } export function list2dict( list: ReadonlyArray, key: K & (T[K] extends string | number | symbol ? K : never), ): Record { return list.reduce( (acc, item) => { acc[item[key] as T[K] & (string | number | symbol)] = item return acc }, {} as Record, ) } export function limitValue(v: number, min: number, max: number) { return Math.min(Math.max(v, min), max) } export function removeUndefine(t: T | undefined): t is T { return t !== undefined } export function intRange(start:number,count:number){ const result:number[] =[]; for(let i=0;i