当前位置: 首页 > news >正文

三小时快速上手TypeScript之接口

在TypeScript(TS)中,接口(Interface)是一种非常重要的概念,它用于定义对象的结构,包括对象中必须包含哪些属性以及这些属性的类型。接口的作用主要有以下几个方面:

1. 接口的定义

接口使用 interface 关键字定义,语法如下:

interface Person {name: string;age: number;sayHello(): void;
}

在这个例子中,Person 接口定义了一个对象的结构,要求对象必须包含以下内容:

  • name 属性,类型为 string
  • age 属性,类型为 number
  • sayHello 方法,返回类型为 void

2. 接口的作用

(1)类型检查

接口的主要作用是为对象提供类型检查。当你使用接口定义的类型时,TypeScript 会检查对象是否符合接口的结构。例如:

let person: Person = {name: "Alice",age: 25,sayHello() {console.log("Hello, my name is " + this.name);}
};

如果对象缺少接口中定义的属性或方法,或者类型不匹配,TypeScript 会报错:

let wrongPerson: Person = {name: "Bob" // 缺少 age 和 sayHello
}; // Error: Type '{ name: string; }' is missing the following properties from type 'Person': age, sayHello
(2)可选属性

接口中可以定义可选属性,使用 ? 表示。例如:

interface Person {name: string;age?: number; // 可选属性
}

在这种情况下,age 属性可以存在,也可以不存在:

let person1: Person = {name: "Alice"
}; // 合法let person2: Person = {name: "Bob",age: 30
}; // 也合法
(3)只读属性

接口中可以使用 readonly 关键字定义只读属性,这些属性只能在对象创建时赋值,之后不能修改:

interface Person {readonly name: string;age: number;
}
let person: Person = {name: "Alice",age: 25
};
person.age = 30; // 合法
person.name = "Bob"; // Error: Cannot assign to 'name' because it is a read-only property.
(4)索引签名

接口可以定义索引签名,表示对象可以通过某种类型的键来访问值。例如:

interface StringArray {[index: number]: string;
}

这表示 StringArray 是一个数组,其索引是数字类型,值是字符串类型:

let arr: StringArray = ["a", "b", "c"];
console.log(arr[0]); // 输出 "a"
(5)函数类型接口

接口也可以定义函数的类型,包括参数和返回值。例如:

interface SearchFunc {(source: string, subString: string): boolean;
}

使用时:

let mySearch: SearchFunc = function (source: string, subString: string): boolean {return source.search(subString) !== -1;
};
(6)继承接口

接口可以继承其他接口,使用 extends 关键字。例如:

interface Person {name: string;age: number;
}interface Employee extends Person {department: string;
}

Employee 接口继承了 Person 接口的所有属性,并添加了一个 department 属性。

3. 接口的实现

虽然接口本身不能直接实例化,但可以通过类来实现接口。例如:

class Student implements Person {name: string;age: number;constructor(name: string, age: number) {this.name = name;this.age = age;}sayHello() {console.log("Hello, my name is " + this.name);}
}

Student 类实现了 Person 接口,必须包含接口中定义的所有属性和方法。

4. 接口的用途

  • 约束对象结构:确保对象符合特定的结构,便于代码的维护和扩展。
  • 类型检查:在编译时检查代码中的类型错误。
  • 代码规范:通过接口定义清晰的契约,让代码更易于理解和协作。

总之,接口是TypeScript中非常强大的工具,用于定义对象的结构和行为,帮助开发者编写更安全、更规范的代码。

http://www.xdnf.cn/news/199369.html

相关文章:

  • SoapUi测试1——REST(WebAPi、Json协议/HTTP、Post通讯方式)接口测试
  • 【AI 工业应用 】AI大模型在工业领域(CAD等)的前景与实战
  • 1.8空间几何与场论
  • OpenGL进阶系列21 - OpenGL SuperBible - blendmatrix 例子学习
  • [26] cuda 应用之 nppi 实现图像格式转换
  • 企业 AD 域安全10大风险场景解析
  • Redis常用数据结构解析:从原理到实战应用
  • Python(14)推导式
  • Linux文件的一般权限
  • 2799. 统计完全子数组的数目
  • [Spring] Sentinel详解
  • Linux常见基础命令
  • i/o复用函数的使用——epoll
  • jclasslib 与 BinEd 结合的二进制分析技术指南
  • 【计算机系统结构】第四章
  • 利用EMQX实现单片机和PyQt的数据MQTT互联
  • 数据库系统概论|第三章:关系数据库标准语言SQL—课程笔记6
  • 计算机基础—(九道题)
  • 云上玩转DeepSeek系列之六:DeepSeek云端加速版发布,具备超高推理性能
  • AI图片跳舞生成视频,animate X本地部署。
  • 2025系统架构师---论企业集成平台的技术与应用
  • 永磁同步电机控制算法-反馈线性化滑模控制
  • Telephony VoiceMail
  • 数据库基础与核心操作:从概念到实战的全面解析
  • 嵌入式多功能浏览器系统设计详解
  • 使用双端队列deque模拟栈stack
  • 获得ecovadis徽章资格标准是什么?ecovadis评估失败的风险
  • sortablejs + antd-menu 拖拽出重复菜单
  • 【个人理解】MCP server和client二者各自的角色以及发挥的作用
  • 【TS入门笔记4---装饰器】