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

「前端+鸿蒙」鸿蒙应用开发-TS接口-语法多态

在 TypeScript 中,接口(Interfaces)是一种强大的方式来定义对象的结构,它们用于类型检查和确保对象符合特定的结构。接口也可以用于类,实现类似多态的特性。以下是 TypeScript 中接口的语法和多态的快速入门指南。

TS快速入门-接口-语法

定义接口

接口用于定义对象的结构,可以包括属性、函数、可选属性等:

interface Person {name: string;age: number;speak?: () => void; // 可选属性
}
实现接口

类可以通过 implements 关键字实现一个或多个接口:

class Student implements Person {name: string;age: number;constructor(name: string, age: number) {this.name = name;this.age = age;}speak(): void {console.log(`My name is ${this.name} and I am studying TypeScript.`);}
}
接口继承

接口可以继承其他接口,类似于类继承:

interface Animal {name: string;makeSound(): void;
}interface Dog extends Animal {breed: string;
}class Labrador implements Dog {name: string;breed: string;constructor(name: string, breed: string) {this.name = name;this.breed = breed;}makeSound(): void {console.log('Bark!');}
}
多态

多态允许同一个接口在不同的上下文中有不同的实现:

interface Animal {makeSound(): void;
}class Dog implements Animal {makeSound(): void {console.log('Woof!');}
}class Cat implements Animal {makeSound(): void {console.log('Meow!');}
}function makeAnimalSound(animal: Animal): void {animal.makeSound(); // 多态的使用,实际调用的方法取决于 animal 的类型
}let dog = new Dog();
let cat = new Cat();makeAnimalSound(dog); // 输出: Woof!
makeAnimalSound(cat); // 输出: Meow!

示例代码

以下是一个使用 TypeScript 接口的示例,展示了接口的基本语法和多态的使用:

// 定义接口
interface Greeting {greet(): void;
}// 实现接口的类
class Person implements Greeting {name: string;constructor(name: string) {this.name = name;}greet(): void {console.log(`Hello, my name is ${this.name}!`);}
}// 另一个实现接口的类
class Robot implements Greeting {model: string;constructor(model: string) {this.model = model;}greet(): void {console.log(`Hello, I am ${this.model}!`);}
}// 使用接口实现多态的函数
function introduce(greeting: Greeting): void {greeting.greet(); // 调用实现 Greeting 接口的 greet 方法
}// 创建 Person 和 Robot 的实例
let person = new Person('Alice');
let robot = new Robot('Bender');// 通过接口引用调用多态函数
introduce(person); // 输出: Hello, my name is Alice!
introduce(robot);  // 输出: Hello, I am Bender!

TypeScript 中接口的语法和多态的使用。接口为定义对象和类的结构提供了一种灵活的方式,而多态则允许函数对不同类型的对象执行不同的操作,这使得代码更加通用和可扩展。

相关文章:

  • 生成式人工智能重置:从初期热潮到战略扩展
  • STM32 ST-LINK Utility的下载安装使用说明如下:
  • 【ai】pycharm远程ssh开发
  • 步态控制之足旋转点(Foot Rotation Indicator, FRI)
  • FFmpeg开发笔记(三十六)Linux环境安装SRS实现视频直播推流
  • 实验五、IPv4地址的子网划分,第1部分《计算机网络》
  • 在AWS上运行的EKS Elastic Kubernetes Service 创建集群Cluster,Node group, Nodes
  • php 混合xml js,html 代码报错 ,结束标签关闭, short_open_tag 的作用,php关闭文件结束判断
  • 操作系统真象还原:内存管理系统
  • 计算机毕业设计hadoop+spark+hive舆情分析系统 微博数据分析可视化大屏 微博情感分析 微博爬虫 微博大数据 微博推荐系统 微博预测系统
  • k8s 证书更新
  • 使用SourceTree切换不同的托管平台
  • [C][数据结构][树]详细讲解
  • 考研系列-数据结构第一章、绪论(基本术语、时间复杂度)
  • CSS Display(显示)
  • 「面试题」如何实现一个圣杯布局?
  • Django 博客开发教程 8 - 博客文章详情页
  • es6--symbol
  • HTTP中GET与POST的区别 99%的错误认识
  • JS+CSS实现数字滚动
  • JSDuck 与 AngularJS 融合技巧
  • MD5加密原理解析及OC版原理实现
  • Mocha测试初探
  • React-redux的原理以及使用
  • vue数据传递--我有特殊的实现技巧
  • 京东美团研发面经
  • 每天10道Java面试题,跟我走,offer有!
  • 区块链将重新定义世界
  • 听说你叫Java(二)–Servlet请求
  • 微信小程序开发问题汇总
  • 无服务器化是企业 IT 架构的未来吗?
  • 交换综合实验一
  • ​虚拟化系列介绍(十)
  • #NOIP 2014# day.1 T2 联合权值
  • #php的pecl工具#
  • (Java企业 / 公司项目)点赞业务系统设计-批量查询点赞状态(二)
  • (python)数据结构---字典
  • (pytorch进阶之路)扩散概率模型
  • (react踩过的坑)antd 如何同时获取一个select 的value和 label值
  • (附源码)ssm本科教学合格评估管理系统 毕业设计 180916
  • (一)搭建springboot+vue前后端分离项目--前端vue搭建
  • (游戏设计草稿) 《外卖员模拟器》 (3D 科幻 角色扮演 开放世界 AI VR)
  • (转)JVM内存分配 -Xms128m -Xmx512m -XX:PermSize=128m -XX:MaxPermSize=512m
  • (转)编辑寄语:因为爱心,所以美丽
  • (转)大型网站的系统架构
  • ***linux下安装xampp,XAMPP目录结构(阿里云安装xampp)
  • *算法训练(leetcode)第四十五天 | 101. 孤岛的总面积、102. 沉没孤岛、103. 水流问题、104. 建造最大岛屿
  • .NET 8.0 发布到 IIS
  • .NET Core 和 .NET Framework 中的 MEF2
  • .net 按比例显示图片的缩略图
  • .NET 命令行参数包含应用程序路径吗?
  • .net 写了一个支持重试、熔断和超时策略的 HttpClient 实例池
  • .NET 中使用 TaskCompletionSource 作为线程同步互斥或异步操作的事件
  • .NET/ASP.NETMVC 深入剖析 Model元数据、HtmlHelper、自定义模板、模板的装饰者模式(二)...
  • .Net程序猿乐Android发展---(10)框架布局FrameLayout