/** * * Convert a string to snake case * * 문자열을 스네이크 케이스로 변환 * * @param S String / 문자열 * * @returns Snake case string / 스네이크 케이스 문자열 * * @example * type cases = [ * Expect, 'hello'>>, * Expect, 'user_name'>>, * Expect, 'get_element_by_id'>>, * Expect< * Equal< * SnakeCase<'getElementById' | 'getElementByClassNames'>, * 'get_element_by_id' | 'get_element_by_class_names' * > * >, * ]; * * @link https://www.utilscript.site/docs/usage-string/snake-case * */ export type SnakeCase = S extends `${infer Left}${infer Center}${infer Right}` ? Center extends Uppercase
? Center extends Lowercase
? `${Lowercase}${SnakeCase<`${Center}${Right}`>}` : `${Lowercase}_${SnakeCase<`${Center}${Right}`>}` : `${Lowercase}${SnakeCase<`${Center}${Right}`>}` : Lowercase;