打字稿重载功能

时间:2018-07-12 23:05:01

标签: javascript angular typescript

我有以下课程的打字稿有重载功能

Overload signature is not compatible with function implementation.

运行我的应用程序时,出现以下错误:

sayHi(obj: any)

我将以下代码行:sayHi()更改为以下代码行: export class Person { private get fullName() { return this.firstName + '' + this.lastname; } constructor(public firstName, public lastname) { } sayHi(): string; sayHi(name: string): string; sayHi(person: Person): string; sayHi() { return ''; } const name = new Person('jim', 'jonson'); ,所以现在我有以下代码

{{1}}

当我运行上面的代码时,没有错误。

有人可以解释一下为什么此代码没有错误,而我们在上面的代码中可以清楚地看到有些重载签名与函数实现不兼容吗?我错过了什么还是什么?很困惑

1 个答案:

答案 0 :(得分:1)

最后一个签名let temp = [...file]; sortByKey(temp, 'lastCompletedEvalDate'); 需要一个参数,但是您的第一个重载指定您可以不带参数地调用该方法。这是打字稿指出的不兼容性。

为解决这个问题,您可以将最终签名中的参数设为可选,以指示打字稿可以不带任何参数地调用它(从而使其与您的第一个重载兼容):

sayHi(obj: any)