类接口和类型是 TypeScript 中定义类结构和行为的两种机制。类接口用于定义类的公共 API,而类型用于定义类的完整结构,包括私有实现细节。主要区别在于访问性(接口仅公开类成员,而类型公开全部成员)、继承(接口支持多重继承,而类型仅支持单一继承)和实例化(接口不能直接实例化,而类型可以)。根据需求,类接口适用于定义类的公共面向,而类型适用于定义类的完整结构和行为。

TypeScript 类接口与类型
TypeScript 提供了类接口和类型两种机制来定义类的形状和行为。虽然它们有相似之处,但它们在目的和使用方式上存在关键差异。
类接口
目的:定义类的公共 API,包括其属性、方法和事件。
语法:
技术上面应用了三层结构,AJAX框架,URL重写等基础的开发。并用了动软的代码生成器及数据访问类,加进了一些自己用到的小功能,算是整理了一些自己的操作类。系统设计上面说不出用什么模式,大体设计是后台分两级分类,设置好一级之后,再设置二级并选择栏目类型,如内容,列表,上传文件,新窗口等。这样就可以生成无限多个二级分类,也就是网站栏目。对于扩展性来说,如果有新的需求可以直接加一个栏目类型并新加功能操作
interface InterfaceName {
// 属性
property1: type1;
property2: type2;
// 方法
method1(arg1: type3, arg2: type4): returnType;
method2(): void;
// 事件
event1: string;
}类型
目的:定义类的完整结构,包括其私有实现细节。
语法:
type TypeName = {
// 属性
property1: type1;
property2: type2;
// 方法
method1(arg1: type3, arg2: type4): returnType;
method2(): void;
}主要差异
| 特征 | 类接口 | 类型 |
|---|---|---|
| 目的 | 定义公共 API | 定义完整结构 |
| 可访问性 | 只公开类成员 | 公开类成员和私有成员 |
| 继承 | 可以从多个接口继承 | 只能从一个类型继承 |
| 实例化 | 不能直接实例化 | 可以直接实例化 |
| 用法 | 用作类的约束 | 用作对类的完全定义 |
用法示例
类接口:
interface Person {
name: string;
age: number;
greet(): void;
}
class Employee implements Person {
// ...
}类型:
type PersonType = {
name: string;
age: number;
private _privateProperty: number;
greet(): void;
}
const person: PersonType = {
name: "John Doe",
age: 30,
greet() {
// ...
}
}结论
类接口和类型是 TypeScript 中定义类的重要工具。选择哪种机制取决于具体需求:
- 类接口适合定义类的公共面向,而类型适合定义类的完整结构和行为。









