shineout
Version:
Shein 前端组件库
27 lines (20 loc) • 862 B
text/typescript
import { v4 as getUUid } from 'uuid'
import { KeygenType } from '../@types/common'
export function getUidStr(...args: Parameters<typeof getUUid>) {
// dom id cannot start with number
return `a${getUUid(...args)}`
}
function $getKey<T>(d: T, gen: KeygenType<T> | undefined, index?: number) {
if (gen === true) return d
if (typeof gen === 'string') return d[gen]
if (typeof gen === 'function') return gen(d, index)
return index
}
export function getKey<T>(...args: [T, KeygenType<T> | undefined, number?]) {
const key = $getKey(...args) as string | number
if (typeof key !== 'string' && typeof key !== 'number') {
console.error(new Error(`keygen result expect a string or a number, get '${typeof key}'`))
}
return key
}
export const defer = typeof Promise === 'function' ? Promise.resolve().then.bind(Promise.resolve()) : setTimeout