typescript type 和 interface及cla
在 TypeScript 中,type、interface和 class 都是用来定义类型的概念,但它们之间有一些区别。
type 用于定义类型别名、联合类型、交叉类型等,不需要运行时信息。它可以用来定义一个类型的名称,但不能用来定义类型的实例。
interface 主要用于定义对象的类型和形状,支持继承和实现。它可以用来定义一组方法的签名,但不能用来定义类型的实例。
class 既包含类型信息,也包含实际的属性和方法实现。它可以用来定义一个类的实例,并且可以在实例上调用类的方法。
下面是一个简单的例子,演示了type、interface和 class 之间的区别:
interface MyInterface {
method1(): void;
method2(): void;
}
class MyClass1 implements MyInterface {
public method1(): void {
console.log("method1");
}
public method2(): void {
console.log("method2");
}
}
class MyClass2 implements MyInterface {
public method1(): void {
console.log("method1");
}
public method2(): void {
console.log("method2");
}
}
const myObj: MyInterface = new MyClass1();
myObj.method1(); // 输出 "method1"
myObj.method2(); // 输出 "method2"
在上面的例子中,我们首先定义了一个 interface MyInterface,它有两个方法method1和method2。然后我们定义了一个 class MyClass1,它实现了 interface MyInterface 并且有两个方法method1和method2。最后,我们创建了一个 MyClass1 类的实例,并调用了它的两个方法。可以看到,通过实现 interface 和 class,我们可以在类外部访问和使用类的公有成员。