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

TypeScript 的泛型(Generics)作用理解

把泛型想成 “万能模具”

  1. 不用泛型——每做一种点心就得换一套模具

    // 只做数字的盒子
    function makeNumberBox(n: number): number { return n; }// 只做字符串的盒子
    function makeStringBox(s: string): string { return s; }
    

    写一堆重复代码,烦!

  2. 用泛型——一套模具,什么料都能倒

    // T 就是一个“占位符”,到时传什么类型就变成什么类型
    function makeBox<T>(value: T): T {return value;
    }const numBox = makeBox<number>(123);     // 模具变成数字盒
    const strBox = makeBox<string>('hello'); // 模具变成字符串盒
    

    一套代码,通吃所有类型。

  3. 还能给模具加“约束”
    只想做“有长度”的点心?

    function logLength<T extends { length: number }>(item: T) {console.log(item.length);
    }
    logLength('abc');   // 3
    logLength([1,2,3]); // 3
    logLength(123);     // ❌ 报错,数字没 length
    

一句话总结:
泛型 = 写一次模具,适配所有形状,既省代码又保类型安全。

http://www.dtcms.com/a/347521.html

相关文章:

  • 如何优雅解决 OpenCV 分段错误(Segfault):子进程隔离实战
  • 工业企业与海关匹配数据(2000-2013)
  • Unity中删除不及时的问题
  • DeepSeek-V3.1发布,预示下一代国产芯片即将发布,更新一小版本,跨出一大步
  • 深入理解3x3矩阵
  • Java—— 配置文件Properties
  • Spring Boot 实现 POJO 级联封装复杂属性
  • Redis学习笔记 ----- 缓存
  • 寻鲜之旅“咖”约深圳,容声冰箱引领“养鲜”新体验
  • 解决coze api使用coze.workflows.runs.create运行workflow返回400,但text为空
  • ⚡ Ranger 基础命令与功能详解
  • Talkie AI
  • 硬件笔记(27)---- 恒流源电路原理
  • 环境 (shell) 变量
  • QT-Mysql-查询语句-查询是否有表-表列名-查询记录
  • 力扣hot100:搜索二维矩阵与在排序数组中查找元素的第一个和最后一个位置(74,34)
  • ros 消息类型与查阅相关内容
  • XCVM1802-2MSEVSVA2197 XilinxAMD Versal Premium FPGA
  • 同步和异步、阻塞和非阻塞的再理解
  • JAVA核心基础篇-集合
  • 力扣(组合)
  • 如何解决 pyqt5 程序“长时间运行失效” 问题?
  • React学习(十一)
  • Windows 平台查看端口占用情况并终止进程
  • flink常见问题之非法配置异常
  • leetcode 852 山脉数组的顶峰索引
  • 讲点芯片验证中的统计覆盖率
  • 【URP】[平面阴影]原理与实现
  • 如何使用和优化SQL Server存储过程:全面指南
  • 论文阅读:arxiv 2025 Can You Trick the Grader? Adversarial Persuasion of LLM Judges