TypeScript 接口 interface 核心基础:定义、继承与类实现

作者:半夏时间:2026-10-24 23:26:38浏览:212

本文详解 TypeScript 中 interface 的核心用法,涵盖基本定义、可选属性与任意属性的配置,以及接口间的多重继承。同时解析接口如何继承类成员并实现约束,帮助开发者掌握类型规范与代码复用技巧。

前言:

在面向对象编程体系中,接口扮演着关键角色,其本质是对行为模式的抽象。这种机制通常被称为 interface。

JavaScript 原生并不包含接口的概念,这是 TypeScript 引入的新特性。接下来我们将探讨如何正确定义和使用它。

1、接口定义

接口的核心作用:

  • 在面向对象编程中,接口用于定义行为和动作的规范标准;
  • 在程序开发过程中,接口起到限制和规范化代码结构的作用;

接口通常使用 interface 关键字进行定义,命名时首字母建议大写。在实际项目中,为了快速识别接口类型,通常会在名称前添加大写字母 I,例如:

interface IPerson{
 name: string
 age: number
 sex: string
}

接口的主要功能是约束对象的属性规范,示例如下:

interface IPerson{
 name: string
 age: number
 sex: string
}
let webPerson: IPerson = {
 name:"倩倩",
 age:18,
 sex:'girl'
}

在利用上述 IPerson 定义对象时,所有声明的属性均为必填项,若遗漏任一属性,编译器将报错。那么,当某些属性并非所有对象都具备时(例如职业信息),该如何处理呢?

接口成员可以设置为可选,定义时在属性名后添加 "?" 符号,例如:

interface IPerson{
 name: string
 age: number
 sex: string
 work?: string
}

然而,在特殊场景下,部分人可能有饮食禁忌或特殊爱好,这些属性并非普遍存在且类型不确定。此时,可以使用 propName 来定义任意属性,示例如下:

interface IPerson{
 name: string
 age: number
 sex: string
 work?: string
 [propName:string]: any
}
let webPerson: IPerson = {
 name:"倩倩",
 age:18,
 sex: 'girl',
 hobby: "跳舞",
 refuse:"不吃羊肉"
}

通过添加任意属性定义,对象可以包含任意数量的额外特殊属性。

2、接口继承

与类类似,接口之间也可以相互继承。这使得从一个接口复制成员到另一个接口成为可能,从而灵活地将接口拆分到可复用的模块中。继承时使用 extends关键字,例如:

interface IPerson{
 name: string
 age: number
 sex: string
 work?: string
 [propName:string]:any
}
interface IAdult extends IPerson{
 isHaveChildren: boolean
 isBoss: boolean
}
let Tom: IAdult = {
 isBoss: false,
 isHaveChildren: false,
 name: '倩倩',
 age: 20,
 sex: "girl"
}

一个接口可以继承一个或多个其他接口,多个接口之间使用逗号 "," 分隔。例如:

interface IPerson{
 name: string
 age: number
 sex: string
}
interface IAdult extends IPerson{
 isBoss: boolean
}
interface elderly extends IPerson, IAdult{
 isRetire:boolean 
}

接口的继承本质上是接口的扩展,即通过添加更多约束来扩展原有接口。一个接口可以扩展自多个接口。

3、类实现接口

在 TypeScript 中,接口可以继承类,从而获得该类的所有成员。此时,该接口只能引用这个类或其子类的实例。例如:

class Person{
 name:string;
 age: number
 constructor(name: string, age: number) {
  this.name = name
  this.age = age
 }
}
interface IAdult extends Person{
 married:boolean
}
let Tom: IAdult = {
 name: "Tom",
 age: 20,
 married: true
}
console.log(Tom);

当接口继承一个类类型时,它会继承类的成员定义,但不包括具体的实现逻辑。

至此,关于 TypeScript 核心基础之接口 interface 的介绍已完成。如需了解更多相关 TypeScript 接口 interface 内容,请查阅本站往期文章或继续浏览后续文章,感谢大家的支持!

作者最新文章
相关文章
更多