== Why is this an issue?

TypeScript allows declaring the type of a function in two different ways:

- Function type: `() => number`
- Object type with a call signature: `{ (): number }`

The function type syntax is generally preferred for being more concise.

== How to fix it

Use a function type instead of an interface or object type literal with a single call signature.

=== Code examples

==== Noncompliant code example

[source,typescript,diff-id=1,diff-type=noncompliant]
----
function apply(f: { (): string }): string {
  return f();
}
----

==== Compliant solution

[source,typescript,diff-id=1,diff-type=compliant]
----
function apply(f: () => string): string {
  return f();
}
----

==== Noncompliant code example

[source,typescript,diff-id=2,diff-type=noncompliant]
----
interface Foo {
  (): number;
}
----

==== Compliant solution

[source,typescript,diff-id=2,diff-type=compliant]
----
type Foo = () => number;
----

== Resources

=== Documentation

* https://www.typescriptlang.org/docs/handbook/2/functions.html#function-type-expressions[TypeScript Function Type Expressions]
