# 类型检查

<table><thead><tr><th width="284.87109375">选项名</th><th width="109.3125">默认值</th><th>说明</th></tr></thead><tbody><tr><td><code>allowUnreachableCode</code></td><td><code>false</code></td><td>允许代码中存在无法执行的代码（例如 <code>return</code> 后的语句）。</td></tr><tr><td><code>allowUnusedLabels</code></td><td><code>false</code></td><td>允许未使用的 label 语句（例如 <code>label: {}</code>）。</td></tr><tr><td><code>alwaysStrict</code></td><td><code>false</code></td><td>在编译输出的 JS 文件中自动添加 <code>"use strict"</code> 指令。</td></tr><tr><td><code>exactOptionalPropertyTypes</code></td><td><code>false</code></td><td>将可选属性视为 <code>{ foo?: T }</code> 与 <code>{ foo: Tundefined }</code> 不等价，更严格。</td></tr><tr><td><code>noFallthroughCasesInSwitch</code></td><td><code>false</code></td><td>阻止 <code>switch</code> 中 <code>case</code> 无 <code>break</code> 或 <code>return</code> 导致的意外贯穿。</td></tr><tr><td><code>noImplicitAny</code></td><td><code>false</code></td><td>不允许推断为 <code>any</code> 的隐式类型，必须显式声明。</td></tr><tr><td><code>noImplicitOverride</code></td><td><code>false</code></td><td>要求使用 <code>override</code> 关键字显式标注重写父类成员。</td></tr><tr><td><code>noImplicitReturns</code></td><td><code>false</code></td><td>所有代码路径必须显式 <code>return</code> 值（如果函数声明有返回类型）。</td></tr><tr><td><code>noImplicitThis</code></td><td><code>false</code></td><td>不允许 <code>this</code> 的隐式类型为 <code>any</code>，必须有明确上下文类型。</td></tr><tr><td><code>noPropertyAccessFromIndexSignature</code></td><td><code>false</code></td><td>禁止通过属性访问（点语法）访问仅定义了索引签名的属性。</td></tr><tr><td><code>noUncheckedIndexedAccess</code></td><td><code>false</code></td><td>启用对索引访问添加 <code>undefined</code> 类型，比如 <code>obj[key]</code> 推断为 <code>undefined</code></td></tr><tr><td><code>noUnusedLocals</code></td><td><code>false</code></td><td>报告未使用的局部变量。</td></tr><tr><td><code>noUnusedParameters</code></td><td><code>false</code></td><td>报告未使用的函数参数。</td></tr><tr><td><code>strict</code></td><td><code>false</code></td><td>一键开启所有严格类型检查选项（推荐：开启）。</td></tr><tr><td><code>strictBindCallApply</code></td><td><code>false</code></td><td>更严格检查 <code>bind</code>、<code>call</code>、<code>apply</code> 的参数类型匹配。</td></tr><tr><td><code>strictBuiltinIteratorReturn</code></td><td><code>false</code></td><td>要求标准迭代器返回 <code>{ value: T, done: boolean }</code> 的精确类型。</td></tr><tr><td><code>strictFunctionTypes</code></td><td><code>true</code>（启用 <code>strict</code> 时）</td><td>更严格的函数参数双向兼容性检查。</td></tr><tr><td><code>strictNullChecks</code></td><td><code>false</code></td><td>严格处理 <code>null</code> 和 <code>undefined</code>，不再隐式可赋值。</td></tr><tr><td><code>strictPropertyInitialization</code></td><td><code>false</code></td><td>要求类的每个属性都在构造函数中初始化，除非被标注为 <code>undefined</code> 或用 <code>!</code> 断言。</td></tr></tbody></table>
