什么是泛型约束?

泛型约束是一种在泛型类型参数上定义约束条件的机制,它可以帮助我们限制泛型类型参数的取值范围。

在 TypeScript 中,可以使用 extends 关键字来定义泛型类型参数的约束条件。例如,我们可以定义一个泛型函数,要求它的类型参数必须是实现了某个接口的类型:

javascript 复制代码
interface HasLength {
  length: number;
}

function getLength<T extends HasLength>(arg: T): number {
  return arg.length;
}

上述代码中,我们定义了一个 HasLength 接口,它规定了一个 length 属性。然后,我们定义了一个泛型函数 getLength,它要求传入的类型参数 T 必须实现 HasLength 接口,也就是说,它必须有一个 length 属性。

这样,在调用 getLength 函数时,传入的参数必须满足 HasLength 接口的要求,否则会编译错误。例如,下面的调用就会报错:

javascript 复制代码
getLength(123); // 编译错误:数字类型没有 length 属性

而下面的调用则不会报错,因为字符串类型符合 HasLength 接口的要求:

javascript 复制代码
getLength('hello'); // 返回 5

通过泛型约束,我们可以限制泛型类型参数的范围,从而使代码更加健壮和可维护。

相关推荐
幸福摩天轮4 分钟前
function Calling工具系统怎么实现
前端
Jul1en_24 分钟前
【Claude Code Compact】源码级别的学习上下文压缩
java·前端·学习·github·ai编程
windliang30 分钟前
Claude Code 源码分析(五):一次 Tool 调用怎样通过权限检查
前端·人工智能·面试
fengci.43 分钟前
Microweber CMS 未授权路径穿越漏洞(CVE-2026-65694)
android·开发语言·前端·学习·php
Deryck_德瑞克1 小时前
【Nginx】配置差异分析
服务器·前端·nginx
前端 贾公子1 小时前
第06章:结构化输出 (上)
java·服务器·前端
北斗落凡尘1 小时前
React面试题
前端
一棵白菜1 小时前
mac 部署 n8n
前端
学高数就犯困1 小时前
React:常见的性能优化手段
前端·react.js
天天码行空1 小时前
vkeyboardhand:零依赖虚拟键盘指法组件
前端·javascript·vue.js