# TypeScript 命名规范 ## 文件与目录 - 文件名:`kebab-case.ts` / `kebab-case.tsx` - 测试文件:`kebab-case.test.ts` / `kebab-case.spec.ts` - 类型声明文件:`kebab-case.d.ts` - 目录名:`kebab-case/` ## 标识符 | 类别 | 风格 | 示例 | | ----------------- | -------------------------- | ------------------------------ | | 类(Class) | `PascalCase` | `UserService` | | 接口(Interface) | `PascalCase` | `UserProfile`(不加 `I` 前缀) | | 类型别名(Type) | `PascalCase` | `ApiResponse` | | 枚举(Enum) | `PascalCase` | `HttpStatus` | | 枚举成员 | `UPPER_WITH_UNDER` | `NOT_FOUND` | | 函数/方法 | `camelCase` | `getUserById` | | 变量/参数 | `camelCase` | `userId` | | 常量(模块级) | `UPPER_WITH_UNDER` | `MAX_RETRY_COUNT` | | 私有成员 | `_camelCase` | `_cache` | | 泛型参数 | 单字母或 `T` 前缀 | `T`、`TItem`、`K`、`V` | | React 组件 | `PascalCase` | `UserCard` | | React Hook | `camelCase`,以 `use` 开头 | `useUserData` | ## 布尔值命名 布尔变量/属性以 `is`、`has`、`can`、`should` 开头: ```ts const isLoading = true const hasPermission = false ``` ## 避免 - 单字母变量(循环索引 `i`/`j` 除外) - 缩写(`usr`、`btn`);优先完整单词 - 匈牙利命名法(`strName`、`nCount`) - 接口名加 `I` 前缀(`IUserService`)