Skip to content
← Back to rules

typescript/no-explicit-any Restriction

🛠️ An auto-fix is available for this rule for some violations.

作用

不允许显式使用 any 类型。

为什么这很糟糕?

TypeScript 中的 any 类型是类型系统中一个危险的“逃生出口”。使用 any 会禁用许多类型检查规则,通常只应在万不得已时或在原型开发阶段使用。 此规则会报告将 any 关键字显式用作类型注解的情况。

TypeScript 的 --noImplicitAny 编译器选项可以防止隐式的 any,但并不能 像此规则这样阻止显式使用 any

示例

此规则的错误代码示例:

typescript
const age: any = "seventeen";
const ages: any[] = ["seventeen"];
const ages: Array<any> = ["seventeen"];
function greet(): any {}
function greet(): any[] {}
function greet(): Array<any> {}
function greet(): Array<Array<any>> {}
function greet(param: Array<any>): string {}
function greet(param: Array<any>): Array<any> {}

此规则的正确代码示例:

typescript
const age: number = 17;
const ages: number[] = [17];
const ages: Array<number> = [17];
function greet(): string {}
function greet(): string[] {}
function greet(): Array<string> {}
function greet(): Array<Array<string>> {}
function greet(param: Array<string>): string {}
function greet(param: Array<string>): Array<string> {}

配置

此规则接受一个包含以下属性的配置对象:

fixToUnknown

type: boolean

default: false

是否启用自动修复,将 any 类型转换为 unknown 类型。

ignoreRestArgs

type: boolean

default: false

是否忽略剩余参数数组。

如何使用

To enable this rule using the config file or in the CLI, you can use:

json
{
  "rules": {
    "typescript/no-explicit-any": "error"
  }
}
ts
import { defineConfig } from "oxlint";

export default defineConfig({
  rules: {
    "typescript/no-explicit-any": "error",
  },
});
bash
oxlint --deny typescript/no-explicit-any

版本

此规则在 v0.0.13 中添加。

参考