网站首页 > 博客文章 正文
在ts的一些文件里,我们可能会看到一些类的实现里使用到了[implements]这个关键词,可能会有点陌生,今天来学习下
implements
作用
- 该关键字用于实现接口(interface)。
- 被实现的接口定义了一个对象的形状,包括属性、方法及其类型签名。
- 通过使用 implements,类可以声明它遵循某个接口,从而确保类实现了接口中定义的所有属性和方法。
用法
- implements关键字用于类声明中,紧随类名之后,后跟要实现的接口名。一个类可以实现多个接口,接口之间用逗号分隔。
- 示例
interface Interface1 {
...
}
interface Interface2 {
...
}
class MyClass implements Interface1, Interface2 {
// 类的实现
}
运用场景
- 定义对象形状
接口用于定义对象的形状,确保对象具有特定的属性和方法。
interface User {
name: string;
age: number;
greet(): void;
}
class MyUser implements User {
name: string;
age: number;
constructor(name: string, age: number) {
this.name = name;
this.age = age;
}
greet() {
console.log(`Hello, my name is ${this.name} and I am ${this.age} years old.`);
}
}
2. 确保类的一致性
通过实现接口,可以确保类遵循特定的结构,从而提高代码的可读性和可维护性。
interface Shape {
area(): number;
}
class Circle implements Shape {
radius: number;
constructor(radius: number) {
this.radius = radius;
}
area() {
return Math.PI * this.radius * this.radius;
}
}
class Rectangle implements Shape {
width: number;
height: number;
constructor(width: number, height: number) {
this.width = width;
this.height = height;
}
area() {
return this.width * this.height;
}
}
3. 依赖注入【常用】
接口在依赖注入中非常有用,因为它们允许你定义依赖项的形状,而不依赖于具体的实现。
interface Logger {
log(message: string): void;
}
class ConsoleLogger implements Logger {
log(message: string) {
console.log(message);
}
}
class FileLogger implements Logger {
log(message: string) {
// 写入文件逻辑
}
}
class MyService {
private logger: Logger;
constructor(logger: Logger) {
this.logger = logger;
}
doSomething() {
this.logger.log('Doing something...');
}
}
// 创建一个 ConsoleLogger 实例
const consoleLogger = new ConsoleLogger();
// 使用 ConsoleLogger 实例初始化 MyService
const myServiceWithConsoleLogger = new MyService(consoleLogger);
// 调用 MyService 的 doSomething 方法,这将在控制台输出日志
myServiceWithConsoleLogger.doSomething();
// 创建一个 FileLogger 实例
const fileLogger = new FileLogger();
// 使用 FileLogger 实例初始化 MyService
const myServiceWithFileLogger = new MyService(fileLogger);
// 调用 MyService 的 doSomething 方法,这将把日志写入文件
myServiceWithFileLogger.doSomething();
总结
- implements 关键字在 TypeScript 中用于实现接口,确保类遵循特定的结构。
- 有助于提高代码的可读性、可维护性和可扩展性,特别是在大型项目中。
- 通过定义接口,可以清晰地描述对象的形状,并在不同的类之间共享这些定义。
猜你喜欢
- 2025-01-31 福建富昌维控申请人机界面设备识别方法及终端专利,降低识别时间
- 2025-01-31 上海三思取得拉索定位的吊挂式显示屏专利,使显示屏结构稳定
- 2025-01-31 凯晖电子取得分段触控显示屏及具有它的输入设备专利
- 2025-01-31 福建福昕申请通过自定义格式语言完成 3D 模型轻量化编辑与协作专利,实现室内设计跨平台 3D 模型轻量化编辑与协作
- 2025-01-31 FastAI + timm: 快速构建高性能计算机视觉模型
- 2025-01-31 翻译中的创意转化:如何调整视角与结构实现宣传效果
- 2025-01-31 (工具分享)计算机小白专业视频神器-通义万象
- 2025-01-31 最新版camera assistant新增两个功能…
- 2025-01-31 花旗:DeepSeek 潜在效率突破对软件行业的影响
- 2025-01-31 Android View(Android viewpager显示三个view)
你 发表评论:
欢迎- 368℃用AI Agent治理微服务的复杂性问题|QCon
- 367℃手把手教程「JavaWeb」优雅的SpringMvc+Mybatis整合之路
- 359℃初次使用IntelliJ IDEA新建Maven项目
- 352℃Maven技术方案最全手册(mavena)
- 348℃安利Touch Bar 专属应用,让闲置的Touch Bar活跃起来!
- 347℃InfoQ 2024 年趋势报告:架构篇(infoq+2024+年趋势报告:架构篇分析)
- 345℃IntelliJ IDEA 2018版本和2022版本创建 Maven 项目对比
- 343℃从头搭建 IntelliJ IDEA 环境(intellij idea建包)
- 最近发表
- 标签列表
-
- powershellfor (55)
- messagesource (56)
- aspose.pdf破解版 (56)
- promise.race (63)
- 2019cad序列号和密钥激活码 (62)
- window.performance (66)
- qt删除文件夹 (72)
- mysqlcaching_sha2_password (64)
- ubuntu升级gcc (58)
- nacos启动失败 (64)
- ssh-add (70)
- jwt漏洞 (58)
- macos14下载 (58)
- yarnnode (62)
- abstractqueuedsynchronizer (64)
- source~/.bashrc没有那个文件或目录 (65)
- springboot整合activiti工作流 (70)
- jmeter插件下载 (61)
- 抓包分析 (60)
- idea创建mavenweb项目 (65)
- vue回到顶部 (57)
- qcombobox样式表 (68)
- vue数组concat (56)
- tomcatundertow (58)
- pastemac (61)
本文暂时没有评论,来添加一个吧(●'◡'●)