当前位置: 首页 > 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.xdnf.cn/news/1352395.html

相关文章:

  • Kafka 概念与概述
  • 在TencentOS3上部署OpenTenBase:从入门到实战的完整指南
  • 【Java学习笔记】18.反射与注解的应用
  • 遥感机器学习入门实战教程|Sklearn案例⑧:评估指标(metrics)全解析
  • tcpdump命令打印抓包信息
  • 【golang】ORM框架操作数据库
  • 2-5.Python 编码基础 - 键盘输入
  • STM32CubeIDE V1.9.0下载资源链接
  • 醋酸镨:催化剂领域的璀璨新星
  • LangChain4J-基础(整合Spring、RAG、MCP、向量数据库、提示词、流式输出)
  • 信贷模型域——信贷获客模型(获客模型)
  • 温度对直线导轨的性能有哪些影响?
  • 小白向:Obsidian(Markdown语法学习)快速入门完全指南:从零开始构建你的第二大脑(免费好用的笔记软件的知识管理系统)、黑曜石笔记
  • 数字经济、全球化与5G催生域名新价值的逻辑与实践路径
  • 快速掌握Java非线性数据结构:树(二叉树、平衡二叉树、多路平衡树)、堆、图【算法必备】
  • vue3 - 组件间的传值
  • 【小沐学GIS】基于Godot绘制三维数字地球Earth(Godot)
  • 计算机网络 TLS握手中三个随机数详解
  • 【Golang】有关垃圾收集器的笔记
  • 语义通信高斯信道仿真代码
  • GaussDB 数据库架构师修炼(十八) SQL引擎-计划管理-SQL PATCH
  • Base64编码、AES加密、RSA加密、MD5加密
  • RAG Embeddings 向量数据库
  • 使用Ollama部署自己的本地模型
  • 疯狂星期四文案网第48天运营日记
  • 12 SQL进阶-锁(8.20)
  • Python语法速成课程(二)
  • 科技赋能,宁夏农业绘就塞上新“丰”景
  • 进程的概念:进程调度算法
  • 【GPT入门】第57课 详解 LLamaFactory 与 XTuner 实现大模型多卡分布式训练的方案与实践