TypeScript 中重载( overload )、重写( override )
在TypeScript中,重载和重写是面向对象编程中的两个概念。
- 重载(Overload)
重载是指在同一个类中,有多个名称相同的方法,但这些方法的参数类型、个数不同。返回类型可以相同也可以不同。这样的方法就称为重载方法。
例如:
class OverloadExample {
sayHello(name: string): string;
sayHello(name: string, age: number): string;
sayHello(name: any, age?: any) {
if (typeof age === 'number') {
return `Hello, my name is ${name} and I am ${age} years old.`;
} else {
return `Hello, my name is ${name}.`;
}
}
}
let overloadExample = new OverloadExample();
console.log(overloadExample.sayHello("Alice"));
console.log(overloadExample.sayHello("Bob", 25));
- 重写(Override)
重写是指子类继承自父类,子类中可以有与父类完全相同的方法,此时父类的方法就被重写了。
例如:
class ParentExample {
sayHello(name: string): string {
return `Hello, my name is ${name}.`;
}
}
class ChildExample extends ParentExample {
sayHello(name: string): string {
return `Hi, my name is ${name}.`;
}
}
let parentExample = new ParentExample();
console.log(parentExample.sayHello("Alice")); // Hello, my name is Alice.
let childExample = new ChildExample();
console.log(childExample.sayHello("Alice")); // Hi, my name is Alice.
在上述代码中,ChildExample 类重写了 ParentExample 类的 sayHello 方法。当我们创建 ChildExample 类的实例并调用 sayHello 方法时,会调用 ChildExample 类中的重写方法。
评论已关闭