This rule enforces explicit type annotations on all function parameters, including regular parameters, destructured parameters, rest parameters, and default parameters.
- function processUser(user) {
+ function processUser(user: any) {
return user.name.toUpperCase()
}- const validateInput = (input, options) => {
+ const validateInput = (input: any, options: any) => {
return input.length > 0 && options.strict
}- function createUser({ name, email, age }) {
+ function createUser({ name, email, age }: any) {
return { id: Date.now(), name, email, age }
}- function logMessages(...messages) {
+ function logMessages(...messages: any[]) {
console.log(...messages)
}- function greetUser(name = 'Guest') {
+ function greetUser(name: any = 'Guest') {
return `Hello, ${name}!`
}This rule applies to all function types:
- ✅ Function declarations
- ✅ Arrow function expressions
- ✅ Function expressions (but not class methods)
- ✅ Class method definitions
- ✅ Regular parameters -
param: string - ✅ Destructured parameters -
{ name, age }: { name: string; age: number } - ✅ Rest parameters -
...items: string[] - ✅ Default parameters -
name: string = 'default'
The rule provides auto-fix suggestions that add : any type annotations:
param→param: any{ name }→{ name }: any...items→...items: any[]name = 'default'→name: any = 'default'