Skip to content

Commit aacecc7

Browse files
committed
add some emmylua annotation documentation
1 parent 3ad42fe commit aacecc7

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

43 files changed

+6134
-0
lines changed

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -238,6 +238,7 @@ EmmyLua Analyzer Rust implements the standard LSP protocol, making it compatible
238238

239239
- [📖 **Features Guide**](./docs/features/features_EN.md) - Comprehensive feature documentation
240240
- [⚙️ **Configuration**](./docs/config/emmyrc_json_EN.md) - Advanced configuration options
241+
- [📝 **Annotations Reference**](./docs/emmylua_doc/annotations_EN/README.md) - Detailed annotation documentation
241242
- [🎨 **Code Style**](https://github.com/CppCXY/EmmyLuaCodeStyle/blob/master/README_EN.md) - Formatting and style guidelines
242243
- [🛠️ **External Formatter Integration**](./docs/external_format/external_formatter_options_EN.md) - Using external formatters
243244
---
Lines changed: 131 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,131 @@
1+
# EmmyLua 注解文档索引
2+
3+
本目录包含了所有 EmmyLua 注解的详细文档和示例。
4+
5+
## 语法标记符号说明
6+
7+
在注解语法描述中使用以下标记符号:
8+
9+
- `<name>` - 必需的占位符,需要用实际值替换
10+
- `[value]` - 可选项,方括号内的内容是可选的
11+
- `[value...]` - 可选且可重复的项
12+
- `value1 | value2` - 选择项,使用左侧或右侧的值
13+
- `<type[|type...]>` - 类型表达式,支持联合类型
14+
- `[(modifier)]` - 可选修饰符,如 `(exact)`, `(key)`
15+
- `#` - 注释标记,后跟描述文本
16+
17+
## 核心注解
18+
19+
### 类型系统
20+
- [`@alias`](./alias.md) - 类型别名定义
21+
- [`@class`](./class.md) - 类定义
22+
- [`@field`](./field.md) - 字段定义
23+
- [`@type`](./type.md) - 类型声明
24+
- [`@enum`](./enum.md) - 枚举定义
25+
- [`@generic`](./generic.md) - 泛型定义
26+
27+
### 函数注解
28+
- [`@param`](./param.md) - 参数定义
29+
- [`@return`](./return.md) - 返回值定义
30+
- [`@overload`](./overload.md) - 函数重载
31+
- [`@async`](./async.md) - 异步函数标记
32+
- [`@nodiscard`](./nodiscard.md) - 不可忽略返回值
33+
34+
### 类型操作
35+
- [`@cast`](./cast.md) - 类型转换
36+
37+
### 代码质量
38+
- [`@deprecated`](./deprecated.md) - 弃用标记
39+
- [`@diagnostic`](./diagnostic.md) - 诊断控制
40+
41+
### 元数据
42+
- [`@meta`](./meta.md) - 元数据文件
43+
- [`@module`](./module.md) - 模块声明
44+
45+
### 其他注解
46+
- [`@operator`](./operator.md) - 操作符重载
47+
- [`@see`](./see.md) - 引用其他符号
48+
- [`@source`](./source.md) - 源代码引用
49+
- [`@version`](./version.md) - 版本要求
50+
51+
## 使用指南
52+
53+
### 基础用法
54+
大部分注解都使用 `---@` 前缀,并遵循以下格式:
55+
```lua
56+
---@注解名 参数 描述
57+
```
58+
59+
### 常用组合
60+
```lua
61+
-- 类定义组合
62+
---@class User
63+
---@field id number 用户ID
64+
---@field name string 用户名
65+
---@field email string 邮箱
66+
67+
-- 函数定义组合
68+
---@param name string 用户名
69+
---@param age number 年龄
70+
---@return User 用户对象
71+
function createUser(name, age)
72+
return {id = generateId(), name = name, age = age}
73+
end
74+
75+
-- 泛型函数组合
76+
---@generic T
77+
---@param items T[] 项目列表
78+
---@param predicate fun(item: T): boolean 过滤条件
79+
---@return T[] 过滤后的列表
80+
function filter(items, predicate)
81+
-- 实现代码
82+
end
83+
```
84+
85+
### 最佳实践
86+
87+
1. **类型优先**:优先定义类型,再使用类型
88+
2. **渐进增强**:从基础注解开始,逐步添加更复杂的注解
89+
3. **一致性**:在项目中保持注解风格的一致性
90+
4. **文档化**:为复杂的类型和函数提供详细描述
91+
5. **测试验证**:使用类型检查工具验证注解的正确性
92+
93+
### 注解分类
94+
95+
#### 类型定义类
96+
- `@alias` - 简化复杂类型
97+
- `@class` - 定义对象结构
98+
- `@enum` - 定义枚举值
99+
- `@generic` - 定义泛型参数
100+
101+
#### 函数相关类
102+
- `@param` - 参数类型和描述
103+
- `@return` - 返回值类型和描述
104+
- `@overload` - 多种调用方式
105+
- `@async` - 异步函数标记
106+
107+
#### 代码质量类
108+
- `@deprecated` - 标记过时代码
109+
- `@diagnostic` - 控制警告显示
110+
- `@nodiscard` - 强制检查返回值
111+
112+
#### 工具支持类
113+
- `@meta` - 类型定义文件
114+
- `@cast` - 运行时类型转换
115+
116+
## 快速参考
117+
118+
| 注解 | 用途 | 示例 |
119+
|------|------|------|
120+
| `@alias` | 类型别名 | `---@alias StringOrNumber string \| number` |
121+
| `@class` | 类定义 | `---@class User` |
122+
| `@field` | 字段定义 | `---@field name string` |
123+
| `@param` | 参数定义 | `---@param name string` |
124+
| `@return` | 返回值定义 | `---@return boolean` |
125+
| `@type` | 类型声明 | `---@type string` |
126+
| `@generic` | 泛型定义 | `---@generic T` |
127+
| `@overload` | 函数重载 | `---@overload fun(x: number): number` |
128+
| `@deprecated` | 弃用标记 | `---@deprecated 请使用新方法` |
129+
| `@cast` | 类型转换 | `---@cast value string` |
130+
131+
更多详细信息请查看各个注解的专门文档。
Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
# @alias - 类型别名
2+
3+
定义类型别名,用于创建自定义类型、枚举类型或简化复杂类型表达式。
4+
5+
## 语法
6+
7+
```lua
8+
-- 简单别名
9+
---@alias <别名> <类型表达式>
10+
11+
-- 枚举别名
12+
---@alias <别名>
13+
---| '<值1>' [# 描述1]
14+
---| '<值2>' [# 描述2]
15+
---| ...
16+
17+
-- 泛型别名
18+
---@alias <别名><<泛型参数列表>> <类型表达式>
19+
```
20+
21+
## 示例
22+
23+
```lua
24+
-- 简单类型别名
25+
---@alias ID number
26+
---@alias UserName string
27+
28+
-- 联合类型别名
29+
---@alias StringOrNumber string | number
30+
---@alias MaybeString string | nil
31+
32+
-- 枚举类型别名
33+
---@alias HTTPMethod
34+
---| 'GET' # HTTP GET 请求
35+
---| 'POST' # HTTP POST 请求
36+
---| 'PUT' # HTTP PUT 请求
37+
---| 'DELETE' # HTTP DELETE 请求
38+
---| 'PATCH' # HTTP PATCH 请求
39+
40+
-- 状态枚举
41+
---@alias TaskStatus
42+
---| 'pending' # 等待执行
43+
---| 'running' # 正在执行
44+
---| 'completed' # 执行完成
45+
---| 'failed' # 执行失败
46+
47+
-- 泛型别名
48+
---@alias Result<T, E> {success: boolean, data: T, error: E}
49+
---@alias Array<T> T[]
50+
---@alias Dictionary<K, V> table<K, V>
51+
52+
-- 复杂函数类型别名
53+
---@alias EventHandler fun(event: string, ...): boolean
54+
---@alias AsyncCallback<T> fun(error: string?, result: T?): nil
55+
56+
-- 使用示例
57+
---@type HTTPMethod
58+
local method = 'GET'
59+
60+
---@type Result<string, string>
61+
local result = {success = true, data = "Hello", error = nil}
62+
63+
---@param status TaskStatus
64+
function updateTaskStatus(status)
65+
print("Task status:", status)
66+
end
67+
68+
updateTaskStatus('running')
69+
```
70+
71+
## 使用场景
72+
73+
1. **简化复杂类型表达式**
74+
2. **创建枚举类型**
75+
3. **定义通用的数据结构**
76+
4. **提高代码可读性和维护性**

0 commit comments

Comments
 (0)