--- description: 'Disallow the `any` type.' --- > 🛑 This file is source code, not the primary documentation location! 🛑 > > See **https://typescript-eslint.io/rules/no-explicit-any** for documentation. Using the `any` type defeats the purpose of using TypeScript. When `any` is used, all compiler type checks around that value are ignored. ## Rule Details This rule doesn't allow `any` types to be defined. It aims to keep TypeScript maximally useful. TypeScript has a compiler flag for `--noImplicitAny` that will prevent an `any` type from being implied by the compiler, but doesn't prevent `any` from being explicitly used. ### ❌ Incorrect ```ts const age: any = 'seventeen'; ``` ```ts const ages: any[] = ['seventeen']; ``` ```ts const ages: Array = ['seventeen']; ``` ```ts function greet(): any {} ``` ```ts function greet(): any[] {} ``` ```ts function greet(): Array {} ``` ```ts function greet(): Array> {} ``` ```ts function greet(param: Array): string {} ``` ```ts function greet(param: Array): Array {} ``` ### ✅ Correct ```ts const age: number = 17; ``` ```ts const ages: number[] = [17]; ``` ```ts const ages: Array = [17]; ``` ```ts function greet(): string {} ``` ```ts function greet(): string[] {} ``` ```ts function greet(): Array {} ``` ```ts function greet(): Array> {} ``` ```ts function greet(param: Array): string {} ``` ```ts function greet(param: Array): Array {} ``` ## Options The rule accepts an options object with the following properties: ```ts type Options = { // if true, auto-fixing will be made available in which the "any" type is converted to an "unknown" type fixToUnknown: boolean; // specify if arrays from the rest operator are considered okay ignoreRestArgs: boolean; }; const defaults = { fixToUnknown: false, ignoreRestArgs: false, }; ``` ### `ignoreRestArgs` A boolean to specify if arrays from the rest operator are considered okay. `false` by default. Examples of **incorrect** code for the `{ "ignoreRestArgs": false }` option: ```ts /*eslint @typescript-eslint/no-explicit-any: ["error", { "ignoreRestArgs": false }]*/ function foo1(...args: any[]): void {} function foo2(...args: readonly any[]): void {} function foo3(...args: Array): void {} function foo4(...args: ReadonlyArray): void {} declare function bar(...args: any[]): void; const baz = (...args: any[]) => {}; const qux = function (...args: any[]) {}; type Quux = (...args: any[]) => void; type Quuz = new (...args: any[]) => void; interface Grault { (...args: any[]): void; } interface Corge { new (...args: any[]): void; } interface Garply { f(...args: any[]): void; } ``` Examples of **correct** code for the `{ "ignoreRestArgs": true }` option: ```ts /*eslint @typescript-eslint/no-explicit-any: ["error", { "ignoreRestArgs": true }]*/ function foo1(...args: any[]): void {} function foo2(...args: readonly any[]): void {} function foo3(...args: Array): void {} function foo4(...args: ReadonlyArray): void {} declare function bar(...args: any[]): void; const baz = (...args: any[]) => {}; const qux = function (...args: any[]) {}; type Quux = (...args: any[]) => void; type Quuz = new (...args: any[]) => void; interface Grault { (...args: any[]): void; } interface Corge { new (...args: any[]): void; } interface Garply { f(...args: any[]): void; } ``` ## When Not To Use It If an unknown type or a library without typings is used and you want to be able to specify `any`. ## Further Reading - TypeScript [any type](https://www.typescriptlang.org/docs/handbook/basic-types.html#any)