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

关于鸿蒙开发中泛型的介绍

泛型可以让【函数】等,与多种【不同的类型】一起工作,灵活可复用。

通俗一点就是:泛型是 可变 的。

泛型函数

语法

function 函数名<Type>(temp:Type):Type{
  return temp
}

函数名<string>('123')
函数名<number>(1)

泛型约束

之前的类型参数,可以传递任何类型,没有限制。

如果希望有限制 → 泛型约束

语法

interface  接口 {
  属性:类型
}
// 传入的类型必须要有 接口中的属性
function 函数<Type extends 接口>() {}

注意:传入的类型必须要有 接口中的属性 

实例

interface  ILength {
  length:number
}

function  fn<T extends ILength>(param:T){
  console.log("",param.length)
}

多个泛型参数

日常开发中,如果有需要,可以添加多个 类型变量

function func<T, T1>(param: T, param1: T1) {
  console.log('参数1', param)
  console.log('参数2', param1)
}

func<string, number>('大白菜', 99)
func<string[], boolean[]>(['小脑虎'], [false])

泛型接口

定义接口的时候,结合泛型定义,就是泛型接口。

语法

interface 接口<Type>{
  // 内部使用Type
}

实例

interface IdFunc<Type> {
  id: (value: Type) => Type
  ids: () => Type[]
}

let obj: IdFunc<number> = {
  id(value) {
    return value
  },
  ids() {
    return [1, 3, 5]
  }
}

泛型类

定义类的时候,结合泛型定义,就是泛型类。

语法

class  类名<Type>{
//   内部可以使用Type
}

实例

class Person<T> {
  id: T

  constructor(id: T) {
    this.id = id
  }

  getId(): T {
    return this.id
  }
}
// 使用
let p = new Person<number>(10)

相关文章:

  • java代码中<>符号的含义
  • Swift编译加速:精通编译器标志的高效使用
  • 分布式缓存———数据一致性问题
  • 【Rust光年纪】细数 Rust 语言必备库:探索点对点网络、嵌入式数据库和客户端操作
  • 低代码: 组件库测试之渲染和元素获取,触发事件,更新表单,验证事件以及异步请求
  • 有源音箱申请Hi-Res认证指南
  • 空状态设计教程:连接用户体验的桥梁
  • String的不可变性
  • 2020 位示图
  • 基于 STM32、OpenCV 和 Qt 的智能嵌入式考勤系统设计思路(代码示例)
  • 【FastAPI 】FastAPI 模板:提供静态文件
  • ARR 竟然超过 150 万美元!斯坦福都在使用的 AI 学术搜索引擎 Consensus获 USV 领投的 1100 万美元。
  • python从入门到精通:数据容器
  • 人员离岗识别摄像机
  • springboot过滤器、拦截器相关知识
  • 【vue教程】七. Vue 的动画和过渡
  • 成为创作者的第1024天:成长与技术积累的旅程
  • Spring 中XmlWebApplicationContext
  • MySQL:从入门到放弃
  • PyTorch深度学习实战(25)—— 使用向量化思想解决实际问题
  • 山大齐鲁医院回应论文现“男性确诊子宫肌瘤”:给予该护士记过处分、降级处理
  • 伊朗港口爆炸最新事故调查报告公布,2名管理人员被捕
  • 巴基斯坦宣布禁止印度船只入港
  • 五一假期前三日多景区客流刷新纪录,演艺、古镇、山水都很火
  • 菏泽家长“付费查成绩”风波调查:免费功能被误读
  • 微博:严厉打击对肖某董某事件蹭炒热点、编造故事博流量等行为