接口与对象类型
接口(interface)是 TypeScript 中用于定义对象结构的核心机制,也可以使用 type 类型别名定义对象类型。本节将介绍它们的区别及实际用法。
interface 与 type 的区别
interface
interface Person {
name: string;
age: number;
}
type
type Person = {
name: string;
age: number;
};
区别总结:
| 特性 | interface | type |
|---|---|---|
| 对象类型定义 | ✅ 支持 | ✅ 支持 |
| 联合类型 / 基本类型 | ❌ 不支持 | ✅ 支持 |
| 扩展方式 | extends | &(交叉类型) |
| 可重复定义并合并 | ✅ 支持(声明合并) | ❌ 不支持(会报错) |
实际开发中,推荐优先使用
interface定义对象结构,使用type处理联合类型或复杂组合。
可选属性、只读属性、索引签名
可选属性(?)
interface User {
name: string;
age?: number; // 可选
}
只读属性(readonly)
interface Config {
readonly port: number;
}
索引签名
用于动态定义属性:
interface Dictionary {
[key: string]: string;
}
函数类型定义
接口和类型别名都可以用于函数签名声明:
interface Add {
(a: number, b: number): number;
}
const add: Add = (x, y) => x + y;
或使用 type:
type Subtract = (a: number, b: number) => number;
相关内容
- 函数与类型 TypeScript 中函数相关的类型注解方式,包括参数与返回值类型、可选与默认参数、剩余参数,以及函数重载的用法。
- TypeScript 简介 TypeScript 是由 Microsoft 开发的开源编程语言,它是 JavaScript 的一个超集(superset),也就是说,所有合法的 JavaS...
- 类型系统基础 TypeScript 中的基本类型系统,包括原始类型、数组与元组、枚举、any 与 unknown 类型、类型别名与交叉类型等内容。
- 高级类型 介绍 TypeScript 中的高级类型,包括联合类型、类型保护、类型断言、字面量类型、映射类型、条件类型等,帮助开发者灵活使用复杂的类型。
- 类与面向对象 TypeScript 中类的定义方式、继承机制、访问修饰符,以及如何结合接口使用类,并了解抽象类与多态的基础用法。
- 泛型 TypeScript 中泛型的基本概念和用法,包括泛型函数、接口、类,以及泛型约束和默认类型等,帮助开发者灵活构建通用的类型。