typescript - 如何使用 TypeScript 类型获取字符串的长度?

标签 typescript

我正在尝试以数字形式获取字符串的长度:

type Length = LengthOfString<"hello">
//   ^? should be 5

我不知道从哪里开始。我怎样才能做到这一点?

(我正在尝试了解有关 typescript 类型系统的更多信息 - 我不会将其应用于 JS 代码)

最佳答案

一种方法是使用模板文字字符串来分割字符串的每个字符。对于我们可以检索的每个字符,我们将一些元素附加到元组 L 中。

type LengthOfString<T extends string, L extends any[] = []> = 
  T extends `${string}${infer R}` 
    ? LengthOfString<R, [...L, string]>
    : L["length"]

当没有剩余的字符时,我们返回Llength

结果:

type Length = LengthOfString<"hello">
//   ^? 5

Playground

关于typescript - 如何使用 TypeScript 类型获取字符串的长度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74445734/

相关文章:

angular - 名称属性结果为未定义的条件输入

typescript - 为什么 typescript 编译器会在以哈希字符开头的 .ts 文件上静默退出?

typescript - 交集不合并属性枚举

php - 在数据库中插入选定的数据

javascript - 用 typescript 编写的 CLick 事件监听器自行解除绑定(bind)

reactjs - 目前没有配置加载器来处理这个文件

javascript - 如何从原始 HTML 响应中删除某些元素类型?

javascript - Typescript 和 Angular 过滤器

jquery - 单选按钮值返回未定义

reactjs - 启用组件特定的热重载?