57 lines
1.2 KiB
TypeScript
57 lines
1.2 KiB
TypeScript
/**
|
|
* 고유 ID 생성 유틸리티
|
|
*/
|
|
|
|
/**
|
|
* UUID v4 생성
|
|
*/
|
|
export function generateUUID(): string {
|
|
return "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g, function (c) {
|
|
const r = (Math.random() * 16) | 0;
|
|
const v = c === "x" ? r : (r & 0x3) | 0x8;
|
|
return v.toString(16);
|
|
});
|
|
}
|
|
|
|
/**
|
|
* 짧은 고유 ID 생성 (8자리)
|
|
*/
|
|
export function generateShortId(): string {
|
|
return Math.random().toString(36).substring(2, 10);
|
|
}
|
|
|
|
/**
|
|
* 긴 고유 ID 생성 (16자리)
|
|
*/
|
|
export function generateLongId(): string {
|
|
return Math.random().toString(36).substring(2, 18);
|
|
}
|
|
|
|
/**
|
|
* 기본 ID 생성 (UUID v4)
|
|
*/
|
|
export function generateId(): string {
|
|
return generateUUID();
|
|
}
|
|
|
|
/**
|
|
* 타임스탬프 기반 ID 생성
|
|
*/
|
|
export function generateTimestampId(): string {
|
|
return Date.now().toString(36) + Math.random().toString(36).substring(2);
|
|
}
|
|
|
|
/**
|
|
* 컴포넌트 ID 생성 (화면관리 시스템용)
|
|
*/
|
|
export function generateComponentId(prefix: string = "comp"): string {
|
|
return `${prefix}_${generateShortId()}`;
|
|
}
|
|
|
|
/**
|
|
* 화면 ID 생성 (화면관리 시스템용)
|
|
*/
|
|
export function generateScreenId(prefix: string = "screen"): string {
|
|
return `${prefix}_${generateShortId()}`;
|
|
}
|