TypeScript接口(interface)使用指南:定义、属性与函数类型详解

小岛来信
小岛来信
发布时间:2026-10-16| 5人浏览过
原创

TypeScript的核心原则是对数据结构进行类型检查。interface(接口)用于为这些结构命名并定义契约,它在编译后被移除,不影响运行时逻辑。本文详解接口的定义方式、属性修饰、多接口继承以及函数类型的实现。

接口的核心定义

TypeScript中的接口主要用于定义对象的形状。虽然type关键字也可用于定义简单数据类型(如 type str = string),但interface专注于描述类类型、函数类型和数组类型等结构。

第1步:创建基础接口与对象校验

目的:定义对象所需的属性及其类型,确保传入的对象符合规范。

  • 操作入口:通过 interface 关键字声明。
  • 重要参数:属性名后紧跟冒号及类型标识。
  • 完成状态:编译器将严格检查对象是否具备所有必需属性且类型匹配。
// 定义一个简单的接口
interface Person {
  name: string;
}

// 定义获取名称的方法
function getPersonName(person: Person): void {
  console.log(person.name);
}

// 定义设置名称的方法
function setPersonName(person: Person, name: string): void {
  person.name = name;
}

// 创建一个符合接口定义的对象
let person = { name: '一碗粥' };
setPersonName(person, '一碗周');
getPersonName(person); // 输出: 一碗周

上述代码中,Person 接口规定对象必须包含类型为 string 的 name 属性。类型检查不关注属性定义的顺序,只要属性存在且类型正确即可。

接口属性的高级控制

第2步:配置可选属性

目的:允许对象在满足基本要求的同时,具备灵活的非必填字段。

  • 操作方法:在属性名后添加 ? 符号。
  • 注意事项:未在接口中定义的属性(非索引签名扩展)若被访问,会触发编译错误。
interface Person {
  name: string;
  age?: number; // age 变为可选属性
}

let person = {
  name: '一碗周',
  age: 18,
};

// 注意:如果尝试访问未定义的 hobby 属性,即使对象中有该值,TS也会报错
// console.log(person.hobby); // Error: Property 'hobby' does not exist on type 'Person'

第3步:锁定只读属性

目的:防止对象创建后其特定属性被意外修改,保证数据完整性。

  • 操作方法:使用 readonly 修饰符。
  • 风险提醒:一旦赋值成功,后续任何试图修改该属性的行为均会导致编译失败。
interface Person {
  readonly name: string; // 只读属性
}

let person: Person = { name: '一碗周' };

function setPersonName(person: Person, name: string): void {
  person.name = name; // Cannot assign to 'name' because it is a read-only property.
}

接口的复用与扩展

第4步:实现多接口继承

目的:组合多个接口以构建更复杂的业务对象,提高模块复用率。

  • 操作方法:接口使用 extends 关键字,支持逗号分隔多继承。
  • 完成状态:新接口自动拥有所有父接口的成员。
// 定义基础接口
interface PersonName {
  name: string;
}
interface PersonAge {
  age: number;
}

// Person 接口继承前两者,并增加新方法
interface Person extends PersonName, PersonAge {
  hobby: string;
  say(): string;
}

let user: Person = {
  name: '一碗周',
  age: 18,
  hobby: 'coding',
  say() {
    return 'Hello';
  }
};

console.log(user.name, user.age, user.hobby);

函数类型接口的应用

接口不仅可以描述对象,还能描述函数的签名(参数列表和返回值类型)。

第5步:定义函数类型接口

目的:标准化函数传参格式和返回结果。

  • 操作方法:使用括号 () 包裹参数定义,后跟冒号和返回类型。
// 定义函数签名接口
interface MyAdd {
  (x: number, y: number): number;
}

// 实现该接口
let myAdd: MyAdd = (x: number, y: number): number => {
  return x + y;
};

// 等价于直接使用类型别名定义的函数变量:
// let myAdd: (x: number, y: number) => number = ...

以上就是TypeScript接口(interface)的详细内容,包括对象约束、属性修饰及函数定义,更多关于TypeScript的基础知识资料请关注本站其它相关文章!

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。