我的问题是关于使用jsDocs来提供更多上下文TypeScrip实用程序类型.

Given the example

  type Split<
    S extends string, 
    D extends string, 
    T extends string[] = []
  > = 
   S extends `${infer BD}${D}${infer AD}` 
   ? Split<AD, D, [...T, BD]> 
   : [...T, S];

我知道这种类型的代码对于初学者来说可能非常难读,所以我想知道我是否可以做这样的事情:

  /**
   * Splits a string based type into an tuple using a delimiter.
   *
   * @param S - The input string to be split.
   * @param D - The delimiter string used for splitting.
   * @param T - The resulting array of substrings.
   *
   * @example
   * // Split a comma-separated string
   * type Result = Split<"apple,banana,cherry", ",", []>;
   * // Result: ["apple", "banana", "cherry"]
   */

  type Split<
    S extends string, 
    D extends string, 
    T extends string[] = []
  > = 
   S extends `${infer BD}${D}${infer AD}` 
   ? Split<AD, D, [...T, BD]> 
   : [...T, S];

  // ----

这是否为社会人士所接受呢?它会带来什么负面影响吗?

谢谢!

推荐答案

当然,您可以使用JSDoc记录您的实用程序类型. 正确的表单应如下所示:

 /**
   * Splits a string based type into an tuple using a delimiter.
   *
   * @template S - The input string to be split.
   * @template D - The delimiter string used for splitting.
   * @template T - The resulting array of substrings.
   *
   * @returns A tuple of strings representing the segments of the original string after being split by the delimiter.
   *
   * @example
   * // Split a comma-separated string
   * type Result = Split<"apple,banana,cherry", ",", []>;
   * // Result: ["apple", "banana", "cherry"]
   */
  type Split<
    S extends string, 
    D extends string, 
    T extends string[] = []
  > = 
   S extends `${infer BD}${D}${infer AD}` 
   ? Split<AD, D, [...T, BD]> 
   : [...T, S];

Typescript相关问答推荐

根据另一个属性的值来推断属性的类型

类型{}上不存在属性&STORE&A;-MobX&A;REACT&A;TYPE脚本

当方法参数和返回类型不相互扩展时如何从类型脚本中的子类推断类型

在不更改类型签名的情况下在数组并集上映射文字

为什么有条件渲染会导致material 自动完成中出现奇怪的动画?

为什么我的一个合成函数不能推断类型?

TypeScrip:来自先前参数的参数中的计算(computed)属性名称

是否将自动导入样式从`~/目录/文件`改为`@/目录/文件`?

如何在Typescript 中组合unions ?

保护函数调用,以便深度嵌套的对象具有必须与同级属性函数cargument的类型匹配的键

APP_INITIALIZER在继续到其他Provider 之前未解析promise

创建Angular 为17的动态形状时出错

类型';字符串|数字';不可分配给类型';未定义';.类型';字符串';不可分配给类型';未定义';

使用泛型识别对象值类型

如何在Angular 服务中制作同步方法?

如何在Type脚本中创建一个只接受两个对象之间具有相同值类型的键的接口?

带有';的类型脚本嵌套对象可选属性错误满足';

有没有更干净的方法来更新**key of T**的值?

Typescript泛型-键入对象时保持推理

如何使用布尔值构建对象 TYPE,但至少有一个必须为 true