函数实现丢失或没有紧跟在声明之后

函数实现丢失或没有紧跟在声明之后

Function implementation is missing or not immediately following the declaration

当我们声明一个没有实现的函数或出现语法错误时,就会出现“函数实现丢失或没有紧跟在声明之后”的错误。

要解决错误,请提供函数的实现并修复代码中的任何语法错误。

函数实现缺失

以下是错误发生方式的 3 个示例。

索引.ts
class Person { // ⛔️ Error: Function implementation is missing or not immediately following the declaration.ts(2391) console.log('bobbyhadz.com') } // ------------------------------------------------------ // ⛔️ Error: function sum(a: number, b: number): void; // ------------------------------------------------------ abstract class Employee { abstract salary: number; // ⛔️ Error: increaseSalary(): number; }

直接在类的主体中编写代码

第一个示例中的问题是我们直接在类的主体中编写代码,而没有先声明方法。

要解决该错误,请在类中声明一个方法并将您的代码移到该方法中。

索引.ts
class Person { constructor(public name: string, public age: number) { console.log('bobbyhadz.com'); } someMethod() { console.log('bobbyhadz.com'); } } const p = new Person('Bobby hadz', 30) p.someMethod();

将我们的代码移动到类方法中解决了错误。

函数的缺失实现

缺少第二个示例中函数的实现。

索引.ts
// ⛔️ Error: Function implementation is missing or not immediately following the declaration.ts(2391) function sum(a: number, b: number): number;

要解决该错误,请在键入函数时声明类型别名,并单独声明实现。

索引.ts
type Sum = (a: number, b: number) => number; const sum: Sum = (a: number, b: number) => { return a + b; };

我们使用类型别名来键入sum函数。

错误已解决,因为我们在函数声明后立即为其提供了实现。

我还写了一篇关于
函数重载如何在 TS 中工作的详细指南。

在抽象类中声明一个没有实现的方法

如果您在抽象类中声明一个没有实现的方法,您也可能会遇到错误。

索引.ts
abstract class Employee { abstract salary: number; // ⛔️ Error: Function implementation is missing or not immediately following the declaration.ts(2391) increaseSalary(): number; }

要解决这种情况下的错误,我们要么必须在方法前加上关键字abstract,要么为该方法提供一个实现。

索引.ts
abstract class Employee { abstract salary: number; // ✅ this works abstract increaseSalary(): number; }

或者,您可以提供该方法的实现。

索引.ts
abstract class Employee { abstract salary: number; increaseSalary(): number { return this.salary + 100; } }

TypeScript 中的抽象类:

  • 不能用于直接创建对象——不能使用new关键字直接实例化抽象类。
  • 只能作为父类。
  • 可以包含方法和属性的实际实现,其中实现的方法可以引用抽象属性/方法。
  • 可以让子类承诺实现父类定义的抽象方法/属性。

如果多次为具有相同名称的函数定义实现,则会出现
Duplicate function implementation
错误。