TypeScript 中的接口与类
TypeScript 是一种强类型语言,支持复杂和原始类型。它是 JavaScript 编程语言的超集,因此,它还具有 JavaScript 中存在的不同特性,例如面向对象编程 (OOP) 概念和函数式编程概念。
TypeScript 对于拥有大型代码库的组织变得非常有用。TypeScript 有助于防止在 JavaScript 错误推断类型的情况下不可避免的运行时错误。
支持 TypeScript 的适当工具和 IDE 可以通过用户定义的各种接口或 TypeScript 编译器推断的类型来建议代码完成、检测类型中的错误、自动修复错误等等。
本教程将重点介绍类和接口之间的差异,并将演示何时使用哪个来对某些数据进行建模。
TypeScript 中类和接口的区别
基本上需要类来保存具有与其关联的不同属性和方法的不同对象的实现。类可能具有已初始化的属性并在其中具有各种方法的实现,可用于初始化或创建不同的对象。
接口仅用于保存对象对应的各种属性的类型信息。它通常用于类型检查,从而防止运行时错误,不能用于对象实例化。
class Animal {
name : string;
eyes : number;
constructor( name : string, eyes : number) {
this.name = name;
this.eyes = eyes;
}
getName() : string {
return this.name;
}
getEyes() : number {
return this.eyes;
}
}
上面的代码块显示了 TypeScript 类的实现,该类包含与 Animal
类关联的不同属性的蓝图,并具有一些方法。可以使用接口对相同的数据进行建模。
interface Animal {
name : string;
eyes : number;
getName : () => string;
getEyes : () => number;
}
因此,根据接口,它具有对实现该接口的任何对象进行类型检查的所有可能性,但与类不同的是,它无法初始化类的属性,也不能对类中的函数进行任何实现。
何时在 TypeScript 中使用类与接口
类用作包含默认值、不同方法实现的对象蓝图,或者在使用 new
关键字创建同一类的不同实例时。此外,对于类,代码将在运行时占用空间,这与 TypeScript 编译器删除的接口不同。
与接口不同,类具有用于在类中添加一些初始化代码和初始化数据变量的构造函数。
因此,类用于表示一些复杂的数据模型,其对象可能需要创建,并且通常需要扩展,并且可能需要附加初始化逻辑。
同时,接口用于进行简单的数据建模,仅由与对象关联的属性的类型组成。
它们还可以充当某些类的数据接口,例如 class Tiger implements Animal
- Tiger
类将具有与接口 Animal
中存在的相同属性的所有类型检查支持。