开启严格模式是提升typescript代码质量最直接有效的方式,需在compileroptions中设置"strict": true,并可补充nounusedlocals、noimplicitreturns等增强项以进一步保障类型安全。

开启严格模式是提升 TypeScript 代码质量最直接有效的方式。它不是单一开关,而是一组协同工作的类型检查规则,能提前拦截大量运行时隐患。
核心配置:启用 strict 并理解它的作用
在 compilerOptions 中设置 "strict": true,这是启用全部严格检查的快捷方式。它等价于同时开启以下关键选项:
- noImplicitAny:禁止任何未声明类型的变量或参数,强制显式标注类型
- strictNullChecks:null 和 undefined 不再是所有类型的子类型,避免空值误用
- strictFunctionTypes:函数参数做逆变检查,防止不安全的函数赋值
- strictBindCallApply:对 bind、call、apply 的参数类型做严格校验
- strictPropertyInitialization:类中非可选(non-optional)属性必须在构造函数中初始化
- noImplicitThis:禁止 this 在上下文中隐式为 any 类型
- alwaysStrict:自动为每个输出文件添加 "use strict"
推荐补充的严格检查项
strict=true 是基础,但实际项目中建议额外开启这些增强项:
- noUnusedLocals 和 noUnusedParameters:自动标记未使用的变量和函数参数,保持代码干净
- noImplicitReturns:确保函数所有分支都有明确返回值,避免 undefined 意外返回
- noFallthroughCasesInSwitch:强制 switch case 使用 break 或 return,防止意外穿透
- noUncheckedIndexedAccess:访问索引签名对象(如 obj[key])时默认返回 T | undefined,避免越界读取静默失败
常见适配与注意事项
开启严格模式后,部分旧写法会报错,需针对性调整:
- 接口中可选属性要加 ?(如
name?: string),否则 strictPropertyInitialization 会要求初始化 - 异步函数若可能返回 undefined,需显式标注返回类型(如
Promise<string undefined></string>) - 第三方 JS 库没有类型定义时,可配合 skipLibCheck: true 避免干扰,但不应关闭 strict
- 已有大型 JS 项目渐进迁移,可先设 "strict": false,逐个开启子选项,比如先开 noImplicitAny 和 strictNullChecks
验证是否生效的小技巧
写一段测试代码快速确认配置已起作用:
- 声明
let x;→ 应提示 “Variable 'x' implicitly has an 'any' type”(noImplicitAny 生效) - 写
const user: { name: string } = { name: null };→ 应提示 “Type 'null' is not assignable to type 'string'”(strictNullChecks 生效) - 在类中写
class A { id: number; }→ 应提示 “Property 'id' has no initializer”(strictPropertyInitialization 生效)
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











