什么是泛型约束?

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

在 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

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

相关推荐
小赵同学WoW32 分钟前
1-2 TypeScript 中的 `any` 与 `unknown`
前端
six_44 分钟前
C# 上位机(持续更新中)
前端·面试·c#
风雨_44 分钟前
Git Worktree sourcetree完整使用指南
前端
半个落月1 小时前
React 组件通信进阶:useContext 与自定义 Hook 实战详解
前端·react.js
moMo1 小时前
深入 NestJS:从工厂模式到装饰器模式的架构之美
typescript·nestjs
用户921080262861 小时前
ChatComposer 输入区改造:基于技能市场实现 Agent 输入框
前端
用户45989204565161 小时前
一套 KMP 多仓库版本治理工作流:用 Version Catalog + CI 把发版流水线自动化
前端·kotlin
小赵同学WoW1 小时前
1-4 TypeScript 中的 `number`、`bigint` 与 `string`
前端
小赵同学WoW1 小时前
1-3 `boolean` 与字面量类型
前端
光影少年1 小时前
react navite 长列表优化:FlatList / SectionList 原理与优化属性
前端·react native·react.js