首先 什么是方法的重载?
学过后端的朋友们会比较熟悉 就是同名的方法通过参数的不同判断到底是调用哪一个
确实js之前是不支持这种用法的 两个同名的方法 后面的会自动覆盖前一个
例如
function gouto(any,inany){
console.log('方法一',any);
console.log(inany?inany:'');
}
function gouto(any){
console.log('方法二',any);
}
第二个方法会直接把第一个方法覆盖掉
而TS支持这样写
function gouto(name:String): void;
function gouto(age:number): void;
function gouto(int:number,gin?:number): void;
function gouto(any:any,inany?:any): void {
if(typeof any == 'string'){
console.log('第一个方法',any);
}else if(!inany){
console.log('第二个方法',any);
}else{
console.log('第三个方法',any,inany?inany:'');
}
}
gouto('你好');
gouto(11);
gouto(11,12);
简单说 就是通过参数的类型 和数量 判断你调用的是哪一个
但我觉得实用性的话 挺一般的
输出效果如下
确实和java这样的后端语言的重载还是 不一样 或者说 没有很多后端语言中的重载好用
甚至我并不觉得TS方法的重载很好用 我觉得没什么用
但他为了适应原本JS 和 ES5的语法 也本身受到了很大限制这个也没办法 我是觉得TypeScript的方法重载挺鸡肋的