Typesrcipt泛型约束详细解读

news/2025/1/30 9:46:28/

代码示例:

// 如果我们直接对一个泛型参数取 length 属性, 会报错, 因为这个泛型根本就不知道它有这个属性
(() => {// 定义一个接口,用来约束将来的某个类型中必须要有length这个属性interface ILength{// 接口中有一个属性lengthlength:number}function getLength<T extends ILength>(x: T): number {return x.length}console.log(getLength<string>('终于等到你,还好我没放弃'))// console.log(getLength<number>(123))
})()

重要代码解析:

  • function getLength<T extends ILength>(x: T): number:定义了一个名为 getLength 的泛型函数。<T extends ILength> 是类型参数部分,其中 T 是类型参数,extends ILength 表示类型参数 T 必须是实现了 ILength 接口的类型,也就是 T 类型的对象必须具有 length 属性。
  • x: T 表示函数接受一个类型为 T 的参数 x
  • : number 是函数的返回值类型声明,表示该函数将返回一个 number 类型的值。
  • return x.length函数体部分,通过返回 x 的 length 属性值来获取传入对象的长度。由于在类型参数上添加了 extends ILength 的约束,TypeScript 编译器能够确保 x 具有 length 属性,从而避免了直接对泛型参数取 length 属性可能导致的类型错误。

http://www.ppmy.cn/news/1567861.html

相关文章

Java 大视界 -- Java 大数据在自动驾驶中的数据处理与决策支持(68)

&#x1f496;亲爱的朋友们&#xff0c;热烈欢迎来到 青云交的博客&#xff01;能与诸位在此相逢&#xff0c;我倍感荣幸。在这飞速更迭的时代&#xff0c;我们都渴望一方心灵净土&#xff0c;而 我的博客 正是这样温暖的所在。这里为你呈上趣味与实用兼具的知识&#xff0c;也…

Redis内部数据结构--跳表详解

跳表 1. 什么是跳表--skiplist2. skiplist的效率如何保证3. 跳表的实现4. 跳表与平衡搜索树和哈希表的对比 1. 什么是跳表–skiplist skiplist本质上也是一种查找结构&#xff0c;用于解决算法中的查找问题&#xff0c;跟平衡搜索树和哈希表的价值是一样的&#xff0c;可以作为…

FPGA在空间领域应用的权衡之道

新官上任,干货较多。 去年10月30日,紫光国微在投资者关系活动中表示,对FPGA产品的国产化率以及未来价格压力趋势的答复是,除了个别品类外,FPGA领域已基本完成国产化替代。 价格竞争激烈,现有存量市场需求不足,导致产品价格成为重要竞争手段等。 价格是市场新进入者的…

wx044基于springboot+vue+uniapp的智慧物业平台小程序

开发语言&#xff1a;Java框架&#xff1a;springbootuniappJDK版本&#xff1a;JDK1.8服务器&#xff1a;tomcat7数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09;数据库工具&#xff1a;Navicat11开发软件&#xff1a;eclipse/myeclipse/ideaMaven包&#…

C言算法面试:分类与高频题解析

C言算法面试&#xff1a;分类与高频题解析 算法在编程面试中是必考的内容&#xff0c;熟练掌握常见的算法类型和解题思路是通往 offer 的关键。本文将对算法面试题进行分类&#xff0c;总结高频题目&#xff0c;并给出用 C 语言实现的示例代码。 一、算法面试题分类 1. 数组与…

如何在AWS上部署一个Web应用?

随着云计算的普及&#xff0c;越来越多的开发者选择将 Web 应用部署到 AWS&#xff08;Amazon Web Services&#xff09;上。AWS 提供了丰富的云服务&#xff0c;包括计算、存储、数据库等&#xff0c;适用于不同规模的项目。本文将详细介绍如何在 AWS 上部署一个简单的 Web 应…

掌握Gradle构建脚本:Kotlin DSL配置指南与最佳实践

文章目录 Gradle构建文件核心解析构建脚本的层次结构 关键配置id()函数组名称和版本仓库配置导入依赖配置 高效开发实践指南核心开发原则调试与问题排查总结 作为现代JVM生态中最强大的构建工具之一&#xff0c;Gradle凭借其声明式语法和灵活的可扩展性深受开发者喜爱。本文将深…

【论文推荐|深度学习,滑坡检测,多光谱影像,自然灾害,遥感】2022年Landslide4Sense竞赛成果:基于多源卫星影像的先进滑坡检测算法研究(一)

【论文推荐|深度学习&#xff0c;滑坡检测&#xff0c;多光谱影像&#xff0c;自然灾害&#xff0c;遥感】2022年Landslide4Sense竞赛成果&#xff1a;基于多源卫星影像的先进滑坡检测算法研究&#xff08;一&#xff09; 【论文推荐|深度学习&#xff0c;滑坡检测&#xff0c…