TypeScript严格编码规范Skill typescript-strict

TypeScript严格编码规范是一套用于提升TypeScript代码质量和类型安全性的最佳实践指南。该规范强调禁止使用any类型、要求显式返回类型、进行类型化错误处理、避免无解释的类型断言,并推荐使用unknown类型配合类型守卫、优先使用类型推断以及采用可辨识联合类型。适用于前端开发、后端开发及全栈项目,能有效减少运行时错误,提高代码可维护性和团队协作效率。

前端开发 0 次安装 0 次浏览 更新于 3/2/2026

name: typescript-strict description: 严格的TypeScript规则。在编写任何TypeScript代码时使用。

严格的TypeScript标准

规则

1. 禁止使用 any

// 绝对禁止
function process(data: any) {}

// 正确做法
function process(data: unknown) {
  if (isValidData(data)) { /* 使用 data */ }
}

2. 显式返回类型

// 绝对禁止
function getUser(id: string) { return db.find(id); }

// 正确做法
function getUser(id: string): Promise<User | null> { return db.find(id); }

3. 类型化错误处理

// 绝对禁止
catch (e) { console.log(e.message); }

// 正确做法
catch (error: unknown) {
  if (error instanceof AppError) { logger.error(error.message); }
  else if (error instanceof Error) { logger.error(error.message); }
  else { logger.error('未知错误', { error }); }
}

4. 禁止无解释的类型断言

// 绝对禁止
const user = users.find(u => u.id === id)!;

// 正确做法
const user = users.find(u => u.id === id);
if (!user) throw new NotFoundError(`用户 ${id} 未找到`);

5. 在明显的情况下优先使用类型推断

// 不必要 - 类型会被推断
const count: number = 5;

// 良好 - 类型会被推断
const count = 5;

// 良好 - 函数签名需要显式类型
function add(a: number, b: number): number {
  return a + b;
}

6. 使用可辨识联合类型

// 正确做法
type Result<T> =
  | { success: true; data: T }
  | { success: false; error: string };

function handle(result: Result<User>) {
  if (result.success) {
    // TypeScript知道result.data存在
    console.log(result.data.name);
  } else {
    // TypeScript知道result.error存在
    console.log(result.error);
  }
}

快速参考

模式 状态
any 绝对禁止
隐式返回 绝对禁止
无注释的 ! 绝对禁止
// @ts-ignore 绝对禁止
as 类型转换 尽量减少
unknown + 类型守卫 推荐使用