You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何自定义TypeScript的Kebabcase等字符串类型工具?

自定义TypeScript字符串格式转换类型工具

可以实现这类自定义字符串类型转换工具,虽然无法复用Uppercase/Capitalize等内置工具的编译器原生逻辑,但可以利用TypeScript的条件类型、递归类型和模板字面量类型手动实现。

以下是几种常见格式的具体实现:

1. PascalCase(大驼峰式,首字母大写,无分隔符)

type PascalCase<S extends string> = S extends `${infer Prefix}-${infer Suffix}`
  ? `${Capitalize<PascalCase<Prefix>>}${Capitalize<PascalCase<Suffix>>}`
  : S extends `${infer Prefix}_${infer Suffix}`
  ? `${Capitalize<PascalCase<Prefix>>}${Capitalize<PascalCase<Suffix>>}`
  : Capitalize<S>;

// 示例:
type TestPascal = PascalCase<'hello-world_type'>; // 结果:"HelloWorldType"

逻辑:递归识别短横线/下划线分隔符,将每个分段首字母大写后拼接,最后统一处理整个字符串的首字母大写。

2. CamelCase(小驼峰式,首字母小写,后续单词首字母大写)

type CamelCase<S extends string> = S extends `${infer Prefix}-${infer Suffix}`
  ? `${Lowercase<Prefix>}${Capitalize<CamelCase<Suffix>>}`
  : S extends `${infer Prefix}_${infer Suffix}`
  ? `${Lowercase<Prefix>}${Capitalize<CamelCase<Suffix>>}`
  : Lowercase<S>;

// 示例:
type TestCamel = CamelCase<'HELLO-WORLD_TYPE'>; // 结果:"helloWorldType"

逻辑:递归拆分分隔符,首段转为小写,后续分段首字母大写、其余部分小写后拼接。

3. SnakeCase(蛇形命名,下划线分隔,全小写)

type SnakeCase<S extends string> = S extends `${infer First}${infer Rest}`
  ? First extends Uppercase<First>
    ? `_${Lowercase<First>}${SnakeCase<Rest>}`
    : `${First}${SnakeCase<Rest>}`
  : S;

// 示例:
type TestSnake = SnakeCase<'HelloWorldType'>; // 结果:"hello_world_type"

逻辑:递归遍历字符串,遇到大写字母时先添加下划线再转为小写,其余字符直接保留小写格式。

4. KebabCase(短横线命名,短横线分隔,全小写)

type KebabCase<S extends string> = S extends `${infer First}${infer Rest}`
  ? First extends Uppercase<First>
    ? `-${Lowercase<First>}${KebabCase<Rest>}`
    : `${First}${KebabCase<Rest>}`
  : S;

// 示例:
type TestKebab = KebabCase<'HelloWorldType'>; // 结果:"hello-world-type"

逻辑:与SnakeCase逻辑类似,仅将分隔符替换为短横线,遇到大写字母时添加短横线并转小写。

注意事项

  • 这些实现依赖TypeScript 4.1及以上版本的模板字面量类型支持。
  • 若需处理复杂混合分隔符场景,可在条件判断中扩展更多分隔符类型。
  • 内置工具如Capitalize/Lowercase可直接在自定义类型中调用,其编译器原生实现不影响我们基于上层逻辑构建自定义转换。

内容的提问来源于stack exchange,提问作者arnaudpf

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 09:54:15