接口(Interface)
接口是TypeScript中最常用的类型定义方式,用于描述对象的形状。
基本用法
interface User {
id: number
name: string
email: string
avatar?: string // 可选属性
readonly role: string // 只读属性
}
const user: User = {
id: 1,
name: 'Alice',
email: 'alice@example.com',
role: 'admin'
}
typescript
接口继承
interface Animal {
name: string
}
interface Dog extends Animal {
breed: string
bark(): void
}
// 多继承
interface Pet extends Animal, Serializable {
owner: string
}
typescript
索引签名
// 允许任意属性
interface Config {
[key: string]: string | number
version: string // 具体属性类型必须是索引签名的子类型
}
typescript
函数类型接口
interface CompareFn {
(a: number, b: number): number
}
const sort: CompareFn = (a, b) => a - b
typescript
接口 vs type
| 特性 | interface | type |
|---|---|---|
| 对象类型 | 支持 | 支持 |
| 继承 | extends | 交叉类型(&) |
| 声明合并 | 支持 | 不支持 |
| 联合类型 | 不支持 | 支持 |
| 基本类型别名 | 不支持 | 支持 |
选择建议:定义对象结构用interface,需要联合类型、交叉类型或基本类型别名时用type。NestJS项目中接口常用于定义DTO(数据传输对象)。
↑