跳至内容

typescript/prefer-function-type 风格

🛠️ 此规则针对某些违规行为提供自动修复功能。

作用

强制使用函数类型而不是带调用签名的接口。TypeScript 有两种常见的方式为函数声明类型

  • 函数类型:() => string
  • 带签名的对象类型:{ (): string }

只要有可能,通常更倾向使用函数类型,因为它更简洁。

此规则建议使用函数类型,而不是具有单个调用签名的接口或对象类型字面量。

示例

ts
// error
interface Example {
  (): string;
}

function foo(example: { (): number }): number {
  return example();
}

interface ReturnsSelf {
  (arg: string): this;
}

// success
type Example = () => string;

function foo(example: () => number): number {
  return bar();
}

// returns the function itself, not the `this` argument.
type ReturnsSelf = (arg: string) => ReturnsSelf;

function foo(bar: { (): string; baz: number }): string {
  return bar();
}

interface Foo {
  bar: string;
}
interface Bar extends Foo {
  (): void;
}

// multiple call signatures (overloads) is allowed:
interface Overloaded {
  (data: string): number;
  (id: number): string;
}
// this is equivalent to Overloaded interface.
type Intersection = ((data: string) => number) & ((id: number) => string);

参考

以 MIT 许可证发布。