用途
TypeScript Strict Standard 是一套 TypeScript 严格性、整洁代码与安全规则集合,规则从 10 余个生产级 TypeScript 代码库中提取,这些项目均使用 strict: true。它适合在编写、审查或重构任何项目中的 TypeScript 代码时使用,用来约束类型安全与代码风格。
主要能力
规范以编号规则组织,覆盖以下方面:
类型安全(TS-01 至 TS-05):禁止使用 any(库集成边界等例外需加注释说明);避免 as 类型断言,改用类型守卫或泛型;未类型化数据使用 unknown 而非 any;禁止使用 @ts-ignore,必要时用 @ts-expect-error 并附说明;尽量减少非空断言 !。
整洁代码(TS-06 至 TS-10):仅作类型使用时采用 type-only 导入;用判别联合替代布尔标志;除非需要 extends 或声明合并,优先使用 type;始终使用路径别名;不使用 React.FC,改为直接函数声明或带显式 props 类型的箭头函数。
错误处理(TS-11 至 TS-13):使用 Result 模式或 Zod 做结构化错误处理;catch 块必须收窄错误类型;不得静默吞掉错误。
React 相关(TS-14 至 TS-16):事件监听器需清理;Tauri 事件监听器需清理;Context 分层顺序有讲究,外层 context 依赖更少,内层 context 不得依赖外层 context 的消费者。
安全(TS-17 至 TS-20):用 Zod 校验所有外部输入;环境变量在启动时校验;SQL/HTML 中不得使用字符串插值;不得向客户端暴露密钥。
现代类型模式(TS-21 至 TS-23):对联合类型做穷尽性检查(assertNever);对不拥有的输入使用 readonly;对带类型的字面量使用 satisfies 而非 as。
现代运行时模式(TS-24 至 TS-25):使用 using / await using 进行显式资源管理;用 NoInfer<T> 锚定类型推断。
使用方式
规范给出了 tsconfig.json 的基线配置,要求至少包含:
{
"compilerOptions": {
"strict": true,
"noUnusedLocals": true,
"noUnusedParameters": true,
"noFallthroughCasesInSwitch": true,
"isolatedModules": true,
"verbatimModuleSyntax": true,
"moduleResolution": "bundler",
"paths": { "@/*": ["./src/*"] }
}
}
对最高严格度场景(Chrome 扩展、安全关键、Node 原生 TS),可追加:
{
"compilerOptions": {
"noUncheckedSideEffectImports": true,
"exactOptionalPropertyTypes": true,
"erasableSyntaxOnly": true,
"isolatedDeclarations": true
}
}
其中 erasableSyntaxOnly(TS 5.8+)禁止 enum、namespace 与参数属性,使源码可在 Node 原生 TypeScript 剥离下不做修改地运行;isolatedDeclarations(TS 5.5+)要求导出的 API 有显式返回类型,以支持并行构建和更快的类型检查。
版本目标
TypeScript 6.0(2026 年 3 月)为当前稳定版,最低目标为 ES2015,target: es5 已废弃,新代码应去掉 ES5 polyfill。TypeScript 7.0 beta(2026 年 4 月)提供移植到 Go 的原生编译器,在相同类型系统下约比 6.0 快 10 倍,稳定后迁移无需修改源码。Map/WeakMap 的 --upsert 方法(getOrInsert、getOrInsertComputed)可在新的 lib 目标下使用。
适用场景
适用于任何使用 TypeScript 的项目在编写、审查、重构阶段参考,尤其适合需要严格控制类型安全、处理外部输入与密钥、使用 React 或 Tauri,以及追求更高编译器严格度配置的工程。
限制
资料未提供该规范的具体安装命令、集成方式、可执行检查工具或自动化方案;规则本身为约定性标准,未说明强制执行的工具链细节。版本信息为资料所载内容。