📝 基本语法
// 定义接口
interface IAnimal {
name: string;
speak(): string;
}
// 类实现接口
class Dog implements IAnimal {
name: string;
constructor(name: string) {
this.name = name;
}
speak(): string {
return `${this.name} says Woof!`;
}
}
const dog = new Dog('Buddy');
console.log(dog.speak()); // "Buddy says Woof!"
💡
implements vs extends
implements 用于类实现接口;extends 用于类继承类。一个类可以 implements 多个接口,但只能 extends 一个父类。
🔀 实现多个接口
interface Named {
name: string;
}
interface Aged {
age: number;
}
interface Greeter {
greet(): string;
}
// 实现多个接口
class Person implements Named, Aged, Greeter {
constructor(
public name: string,
public age: number
) {}
greet(): string {
return `Hello, I'm ${this.name}, ${this.age} years old`;
}
}
const person = new Person('Alice', 30);
console.log(person.greet());
🔧 接口继承 + 类实现
// 接口继承
interface Serializable {
serialize(): string;
}
interface Comparable {
compareTo(other: any): number;
}
// 接口继承接口
interface Entity extends Serializable, Comparable {
id: string;
}
// 类实现继承后的接口
class User implements Entity {
constructor(
public id: string,
public name: string,
public email: string
) {}
serialize(): string {
return JSON.stringify({ id: this.id, name: this.name, email: this.email });
}
compareTo(other: User): number {
return this.id.localeCompare(other.id);
}
}
// 类同时继承和实现
class AdminUser extends User implements Entity {
role: string = 'admin';
constructor(id: string, name: string, email: string) {
super(id, name, email);
}
}