typescript/no-explicit-any 限制
它做了什么
禁止显式使用 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
是否忽略剩余参数数组。
如何使用
要通过配置文件或 CLI 启用此规则,可以使用:
json
{
"rules": {
"typescript/no-explicit-any": "error"
}
}bash
oxlint --deny typescript/no-explicit-any