我是打字稿的新手,这是我想实现的接口;
interface IThing{
name:string;
age:number;
sayHello:{
(name:string):string;
(age:number):number;
}
}
sayHello有两个表示重载版本的签名。我只是不知道如何在课堂上实现它,有什么帮助吗?谢谢。
我是打字稿的新手,这是我想实现的接口;
interface IThing{
name:string;
age:number;
sayHello:{
(name:string):string;
(age:number):number;
}
}
sayHello有两个表示重载版本的签名。我只是不知道如何在课堂上实现它,有什么帮助吗?谢谢。
要实现一个重载函数,首先编写您希望可见的所有重载调用签名,然后是一个实现签名,它是所有重载签名的超集。例子:
class Thing implements IThing {
// Implement the name and age fields
name: string;
age: number;
// Overload signature #1
sayHello(name: string): string;
// Overload signature #2
sayHello(age: number): number;
// Implementation signature, not visible to external callers
sayHello(arg: any): any {
if(typeof arg === 'string') {
return this.name;
} else if(typeof arg === 'number') {
return this.age;
} else {
throw new Error('sayHello can only take string or a number');
}
}
}
var x = new Thing();
var n = x.sayHello('world'); // n: string
var a = x.sayHello(42); // a: number
var e = x.sayHello(false); // error: false is not string or number