gpt4 book ai didi

javascript - typescript 重载函数

转载 作者:行者123 更新时间:2023-12-03 01:30:47 24 4
gpt4 key购买 nike

我有以下类,它在 typescript 中具有重载功能

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(obj: any) {

return '';
}
const name = new Person('jim', 'jonson');

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

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');

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

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

最佳答案

最后一个签名 sayHi(obj: any) 需要一个参数,但您的第一个重载指定您可以调用不带参数的方法。这是 typescript 指出的不兼容性。

为了解决这个问题,您可以将最终签名中的参数设置为可选,以向 typescript 表明您可以在不带任何参数的情况下调用它(从而使其与您的第一个重载兼容):

sayHi(obj?: any)

关于javascript - typescript 重载函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51315608/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com