Movatterモバイル変換


[0]ホーム

URL:


Skip to main content

prefer-function-type

Enforce using function types instead of interfaces with call signatures.

🔧

Some problems reported by this rule are automatically fixable by the--fix ESLint command line option.

TypeScript allows for two common ways to declare a type for a function:

  • Function type:() => string
  • Object type with a signature:{ (): string }

The function type form is generally preferred when possible for being more succinct.

This rule suggests using a function type instead of an interface or object type literal with a single call signature.

  • Flat Config
  • Legacy Config
eslint.config.mjs
exportdefault tseslint.config({
rules:{
"@typescript-eslint/prefer-function-type":"error"
}
});

Try this rule in the playground ↗

Examples

  • ❌ Incorrect
  • ✅ Correct
interfaceExample{
():string;
}
Open in Playground
functionfoo(example:{():number}):number{
returnexample();
}
Open in Playground
interfaceReturnsSelf{
// returns the function itself, not the `this` argument.
(arg:string):this;
}
Open in Playground

Options

This rule is not configurable.

When Not To Use It

If you specifically want to use an interface or type literal with a single call signature for stylistic reasons, you can avoid this rule.

This rule has a known edge case of sometimes triggering on global augmentations such asinterface Function.These edge cases are rare and often symptomatic of odd code.We recommend you use aninline ESLint disable comment.See#454 for details.

Resources


[8]ページ先頭

©2009-2025 Movatter.jp