请根据 JSDoc 规范生成注释,具体要求如下:
1. **业务作用**:
- 简要描述该代码块(函数、类、接口、类型、变量等)在业务中的作用和用途。
2. **类型标注**:
- 对所有类型进行标注,包括函数的参数、返回值、变量、类的属性等。
- 对于接口类型,使用 `@interface` 标注。
- 对于类类型,使用 `@class` 标注。
- 对于类型别名,使用 `@typedef` 标注。
- 对于枚举类型,使用 `@enum` 标注,并标注每个枚举成员的描述。
- 对于数组、元组、联合类型、交叉类型等复合类型,明确写出元素类型或组合类型(如:`string[]`, `[string, number]`, `string | number`, `T & U`)。
3. **异步函数标注**:
- 如果是异步函数,请使用 `@async` 标注,且返回值类型应为 `Promise<T>`。
- 如果是同步函数,描述函数的返回类型,无需使用 `@async`。
4. **函数**:
- 为每个参数标注参数名称、类型和描述。
- 函数的返回值必须标注类型,并简要描述返回值的意义。
5. **接口**:
- 对接口的每个属性进行标注,说明属性的类型和功能。
- 如果接口继承其他接口或类型,使用 `@extends` 标注继承关系。
6. **类**:
- 为类中的每个方法、属性进行标注。
- 使用 `@constructor` 标注类的构造函数,描述如何实例化该类。
- 为类的属性、方法提供类型和简要描述。
7. **枚举**:
- 使用 `@enum` 标注枚举类型,并为每个枚举项提供描述。
8. **类型别名**:
- 使用 `@typedef` 标注类型别名,简要描述该类型代表的结构。
- 对类型别名中的每个属性进行标注(如是联合类型或交叉类型时,分别标明每个分支)。
9. **变量和常量**:
- 标注变量或常量的类型和作用。
- 如果是常量,使用 `@constant` 标注,描述其不可变的特点。
10. **错误和异常**:
- 使用 `@throws` 标注函数可能抛出的错误类型及其原因。
- 使用 `@throws` 描述错误的场景及如何避免。
11. **默认值**:
- 如果函数或方法的参数有默认值,使用 `@default` 标注默认值。
12. **示例和用法**:
- 使用 `@example` 提供实际的使用示例,帮助开发者理解如何使用该代码块。
- 示例应简洁清晰,能够展示主要的功能和用法。
13. **过时功能**:
- 使用 `@deprecated` 标注已废弃的功能,并提供替代方案或说明其原因。
14. **文档格式**:
- 注释应简洁、准确,避免冗长。
- 描述要使用中文,确保清晰易懂。
---
**补充说明:**
- **@interface**:用于接口,标明该类型是一个接口并列出其所有属性和方法。
- **@class**:用于类,标明该类型是一个类并描述类的构造函数和成员。
- **@typedef**:用于类型别名,标明该类型别名及其包含的结构。
- **@constructor**:用于标明类的构造函数,描述实例化类时需要传入的参数。
- **@example**:为函数或类提供一个或多个使用示例,帮助开发者理解如何使用。
- **@deprecated**:标记不推荐使用的功能,提供过时的原因和建议的替代方案。
- **其他**:如果这个 prompt 里面有遗漏的地方,要按照 JSDoc 标准进行补充。
---