TS 泛型

泛型(宽泛的,不确定的类型)

  • 使用场景:定义一个函数或类时,无法确定要使用的具体类型(返回值、参数、属性的类型不能确定)
  • 泛型使用时相当于一个参数
javascript 复制代码
functiondemo<T>(arg: T): T{
   return arg;
}
// 泛型T可以看做一个变量
demo<number>(10)
demo<string>('你好')
// 基本类型可以不加泛型
demo(true)
demo(10)
泛型结合接口
javascript 复制代码
interface Param<A,B> {
   title: string,
   state: A,
   list: B[]
}

type ListType = {name:string,age:number}
const p1: Param<boolean,ListType> = {
   title: '泛型和接口结合使用',
   state: true,
   list: [
      {name:'张三',age:18},
      {name:'李四',age:16},
   ]
}
泛型继承
javascript 复制代码
// 泛型的继承(对泛型的约束)
function getLength<T extends { length:number }>(arg: T): number{
   return arg.length;
}
getLength([1,2,3,'4']) // 4
getLength('nihao') // 5

function getLength<T extends string | any[]>(arg: T): number{
   return arg.length;
}
getLength([1,2,3,'4']) // 4

// 当使用T[]时,T表示的是数组参数的元素类型
function getLength<T>(arg: T[]): number{
   return arg.length;
}
getLength<string | number>(['张三','李四',10]) // 3
类中使用泛型
javascript 复制代码
// 类中使用泛型
class MyClass<T>{
   prop: T;

   constructor(prop: T){
      this.prop = prop;
   }
}
// 泛型是一个type
type User = {name:string,age:number}
const user1:User = {name:'张三',age:18}
const c1 = new MyClass<User>( user1 )
// 泛型是基本类型
const c2 = new MyClass<string>('张三')
相关推荐
HIT_Weston1 分钟前
56、【Ubuntu】【Gitlab】拉出内网 Web 服务:http.server 单/多线程分析(八)
前端·ubuntu·gitlab
大模型真好玩2 分钟前
轻松搞定年度报告可视化,五分钟用 AntV + Trae Solo 快速构建智能图表生成器!
前端·人工智能·trae
艾小码7 分钟前
Vue Router 进阶指南:打造丝滑的滚动控制与惊艳的路由动画
前端·javascript·vue.js
苏打水com8 小时前
第九篇:Day25-27 Vue进阶——组件复用与状态管理(对标职场“复杂项目”需求)
前端·javascript·vue.js
PineappleCoder8 小时前
别让页面 “鬼畜跳”!Google 钦点的 3 个性能指标,治好了我 80% 的用户投诉
前端·性能优化
卤代烃9 小时前
🕹️ [AI] Chrome DevTools MCP 原理分析
前端·mcp
梦里不知身是客119 小时前
flink对于迟到数据的处理
前端·javascript·flink
卤代烃9 小时前
🤝 了解 CDP (Chrome DevTools Protocol):browser-use 背后的隐藏功臣
前端·chrome·puppeteer
一 乐9 小时前
人事管理系统|基于Springboot+vue的企业人力资源管理系统设计与实现(源码+数据库+文档)
java·前端·javascript·数据库·vue.js·spring boot·后端
b***74889 小时前
前端状态系统的时代变革:从本地状态到全局状态,再到智能状态的未来趋势
前端·状态模式