在TypeScript中,接口(Interface)和类(Class)都可以用来定义类型,但它们的使用场景和目的有所不同。理解它们的区别有助于你在合适的场景中选择合适的工具。
接口主要用于定义对象的形状(Shape),即对象应该有哪些属性和方法。接口是纯粹的抽象结构,不包含具体的实现。
extends
)来扩展其他接口,也可以通过交叉类型(&
)来组合多个接口。interface User {
id: number;
name: string;
email: string;
}
function printUser(user: User) {
console.log(`User: ${user.name}, Email: ${user.email}`);
}
类不仅定义了对象的形状,还包含了具体的实现。类可以包含属性、方法、构造函数等,并且可以被实例化。
class User {
id: number;
name: string;
email: string;
constructor(id: number, name: string, email: string) {
this.id = id;
this.name = name;
this.email = email;
}
print() {
console.log(`User: ${this.name}, Email: ${this.email}`);
}
}
const user = new User(1, 'John Doe', 'john@example.com');
user.print();
在实际开发中,接口和类经常结合使用。例如,你可以定义一个接口来描述一个类的公共API,然后让类实现这个接口。这样可以确保类遵循接口定义的契约,同时保留类的具体实现。