领略TypeScript中implements与extends的奥秘
2023-12-27 01:56:38
TypeScript中的类和接口
在TypeScript中,类和接口是两种重要的类型。类用于定义对象,而接口用于定义对象的行为。类可以继承自其他类,也可以实现接口。
extends
extends
用于建立类与类之间的继承关系。当一个类继承自另一个类时,它就会继承该类的所有属性和方法。子类可以覆盖父类的方法,也可以添加新的方法。
class Parent {
name: string;
constructor(name: string) {
this.name = name;
}
greet() {
console.log(`Hello, my name is ${this.name}.`);
}
}
class Child extends Parent {
age: number;
constructor(name: string, age: number) {
super(name);
this.age = age;
}
greet() {
super.greet();
console.log(`I am ${this.age} years old.`);
}
}
const child = new Child("John", 25);
child.greet();
在上面的示例中,Child
类继承自Parent
类。Child
类继承了Parent
类的name
属性和greet()
方法。Child
类还添加了一个新的属性age
和一个新的方法greet()
。
implements
implements
关键字用于确保类实现了特定的接口。当一个类实现一个接口时,它必须实现接口中定义的所有方法。
interface IGreeter {
greet(): void;
}
class Greeter implements IGreeter {
name: string;
constructor(name: string) {
this.name = name;
}
greet() {
console.log(`Hello, my name is ${this.name}.`);
}
}
const greeter = new Greeter("Jane");
greeter.greet();
在上面的示例中,Greeter
类实现了IGreeter
接口。Greeter
类必须实现IGreeter
接口中定义的greet()
方法。
extends和implements的区别
extends
和implements
这两个关键字在TypeScript中都有着重要的作用。extends
用于建立类与类之间的继承关系,而implements
用于确保类实现了特定的接口。
extends
和implements
的区别在于,extends
可以用于继承类中的所有属性和方法,而implements
只能用于实现接口中定义的方法。
class Parent {
name: string;
constructor(name: string) {
this.name = name;
}
greet() {
console.log(`Hello, my name is ${this.name}.`);
}
}
interface IGreeter {
greet(): void;
}
class Child extends Parent implements IGreeter {
age: number;
constructor(name: string, age: number) {
super(name);
this.age = age;
}
greet() {
super.greet();
console.log(`I am ${this.age} years old.`);
}
}
const child = new Child("John", 25);
child.greet();
在上面的示例中,Child
类继承自Parent
类并实现了IGreeter
接口。Child
类继承了Parent
类的name
属性和greet()
方法,也实现了IGreeter
接口中定义的greet()
方法。
总结
在本文中,我们探讨了TypeScript中extends
和implements
这两个关键字的用法和区别。我们看到,extends
用于建立类与类之间的继承关系,而implements
用于确保类实现了特定的接口。我们也看到,extends
和implements
的区别在于,extends
可以用于继承类中的所有属性和方法,而implements
只能用于实现接口中定义的方法。