noExplicitAny
诊断类别:lint/suspicious/noExplicitAny
¥Diagnostic Category: lint/suspicious/noExplicitAny
自从:v1.0.0
¥Since: v1.0.0
来源:
¥Sources:
-
与以下相同:
@typescript-eslint/no-explicit-any¥Same as:
@typescript-eslint/no-explicit-any
禁止使用 any 类型。
¥Disallow the any type usage.
TypeScript 中的 any 类型是类型系统中的危险 “应急方案”。使用 any 会禁用许多类型检查规则,通常最好只作为最后的手段或在原型代码时使用。
¥The any type in TypeScript is a dangerous “escape hatch” from the type system.
Using any disables many type checking rules and is generally best used only as a last resort or when prototyping code.
TypeScript 的 --noImplicitAny 编译器选项可防止隐含的 any,但不会阻止 any 按照此规则的方式显式使用。
¥TypeScript’s --noImplicitAny compiler option prevents an implied any,
but doesn’t prevent any from being explicitly used the way this rule does.
有时你可以使用类型 unknown 而不是类型 any。它还接受任何值,但是需要在调用属性之前检查属性是否存在。
¥Sometimes you can use the type unknown instead of the type any.
It also accepts any value, however it requires to check that a property exists before calling it.
¥Examples
¥Invalid
let variable: any = 1;code-block.ts:1:15 lint/suspicious/noExplicitAny ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
✖ Unexpected any. Specify a different type.
> 1 │ let variable: any = 1;
│ ^^^
2 │
ℹ any disables many type checking rules. Its use should be avoided.
class SomeClass { message: Array<Array<any>>;}code-block.ts:2:25 lint/suspicious/noExplicitAny ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
✖ Unexpected any. Specify a different type.
1 │ class SomeClass {
> 2 │ message: Array<Array<any>>;
│ ^^^
3 │ }
4 │
ℹ any disables many type checking rules. Its use should be avoided.
function fn(param: Array<any>): void {}code-block.ts:1:26 lint/suspicious/noExplicitAny ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
✖ Unexpected any. Specify a different type.
> 1 │ function fn(param: Array<any>): void {}
│ ^^^
2 │
ℹ any disables many type checking rules. Its use should be avoided.
¥Valid
let variable: number = 1;let variable2 = 1;class SomeClass<T extends any> { message: Array<Array<unknown>>;}function fn(param: Array<Array<unknown>>): Array<unknown> {}¥Related links