news 2026/5/21 19:22:10

Typescript泛型<T>的三个位置解析

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Typescript泛型<T>的三个位置解析

泛型<T>的三个位置解析

functiongetFirst<T>(list:T[]):T{returnlist[0];}// ① ② ③

三个T的含义

<T>—— 类型参数声明

这是声明一个类型变量T,类似于函数参数列表(a, b)是声明值参数。

告诉 TypeScript:「我接下来要用一个叫T的类型,它是什么类型现在还不知道,等调用时再确定。」

list: T[]—— 参数类型

使用T,表示参数list是一个T类型的数组。

: T——返回值类型

冒号后面的T表示函数的返回值类型是T

也就是说:传入的数组里元素是什么类型,返回值就是什么类型。

类比普通函数理解

对比一下普通函数的写法你就明白了:

functiongetFirst(list:number[]):number{returnlist[0];}// ↑ 返回值类型

泛型版本只是把具体类型number换成了一个「占位符」T

functiongetFirst<T>(list:T[]):T{// ↑声明 ↑使用 ↑使用(作为返回类型)returnlist[0];}

调用时发生了什么

constn=getFirst([1,2,3]);// T 被推断为 number,返回 numberconsts=getFirst(["a","b","c"]);// T 被推断为 string,返回 stringconstb=getFirst<boolean>([true]);// 显式指定 T = boolean

总结对照表

位置写法作用
<T>声明类型参数
list: T[]使用T 描述参数类型
: T使用T 描述返回值类型

简单记忆:尖括号里的T是定义,其他地方的T都是使用

后记

2026年5月21日于上海,在claude opus 4.7辅助下完成。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/21 19:19:40

非遗传承风:千年古法香云纱,大宋幽兰让非遗走入寻常生活

大宋幽兰执匠心&#xff0c;千年纱韵续风华香云纱作为国家级非物质文化遗产&#xff0c;是世间唯一依靠天然植物与河泥共同染制而成的珍贵面料&#xff0c;自明清传承至今&#xff0c;承载着岭南大地独有的织造智慧。在快时尚盛行的当下&#xff0c;多数服饰品牌一味追求量产速…

作者头像 李华
网站建设 2026/5/21 19:13:05

RPC 核心概念 04:服务发现与负载均衡

RPC 核心概念 04&#xff1a;服务发现与负载均衡 单机时代我们靠 IPPort 直连&#xff1b;微服务时代&#xff0c;服务实例数动辄几十上百&#xff0c;IP 还会频繁变化。服务发现 负载均衡就是解决"我该把请求发到哪里"的核心机制。一、问题的提出 调用方&#xff1…

作者头像 李华