typescript中范型的示例分析
发表于:2025-11-12 作者:千家信息网编辑
千家信息网最后更新 2025年11月12日,这篇文章给大家分享的是有关typescript中范型的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。范型在定义泛型后,有两种方式使用,一种是传入泛型类型,另一种使用
千家信息网最后更新 2025年11月12日typescript中范型的示例分析范型
infer
这篇文章给大家分享的是有关typescript中范型的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。
范型
在定义泛型后,有两种方式使用,一种是传入泛型类型,另一种使用类型推断。
declare function fn(arg: T): T; // 定义一个泛型函数 const fn1 = fn ('hello'); // 第一种方式,传入泛型类型 string const fn2 = fn(1); // 第二种方式,从参数 arg 传入的类型 number,来推断出泛型 T 的类型是 number
一个扁平数组结构建树形结构例子:
// 转换前数据 const arr = [ { id: 1, parentId: 0, name: 'test1'}, { id: 2, parentId: 1, name: 'test2'}, { id: 3, parentId: 0, name: 'test3'} ]; // 转化后 [ { id: 1, parentId: 0, name: 'test1', childrenList: [ { id: 2, parentId: 1, name: 'test2', childrenList: [] } ] }, { id: 3, parentId: 0, name: 'test3', childrenList: [] } ]interface Item { id: number; parentId: number; name: string; }// 传入的 options 参数中,得到 childrenKey 的类型,然后再传给 TreeIteminterface Options { childrenKey: T; } type TreeItem = Item & { [key in T]: TreeItem[] | [] }; declare function listToTree(list: Item[], options: Options): TreeItem[]; listToTree(arr, { childrenKey: 'childrenList' }).forEach(i => i.childrenList) infer
表示在 extends 条件语句中待推断的类型变量。
type ParamType= T extends (param: infer P) => any ? P : T;
这句话的意思是:如果 T 能赋值给 (param: infer P) => any,则结果是 (param: infer P) => any 类型中的参数 P,否则返回为 T。
interface User { name: string; age: number; } type Func = (user: User) => void type Param = ParamType; // Param = User type AA = ParamType; // string 例子:
// [string, number] -> string | numbertype ElementOf= T extends Array ? E : never;type TTuple = [string, number];type ToUnion = ElementOf ; // string | number// T1 | T2 -> T1 & T2type UnionToIntersection = (U extends any ? (k: U) => void : never) extends ((k: infer I) => void) ? I : never;type Result = UnionToIntersection ; // T1 & T2
感谢各位的阅读!关于"typescript中范型的示例分析"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!
类型
范型
参数
方式
推断
示例
分析
例子
内容
更多
篇文章
结构
不错
实用
函数
变量
意思
扁平
数据
数组
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
南通浪潮服务器哪个厂家质量好
网络安全三同步原则是什么
机房服务器启动画面
运城市网络安全宣传活动
工业互联网网络技术
什么是时序数据库
软件开发的工作服务方案
数据库转mes
网络安全诈骗作业800
网络安全科管什么
服务器 开网站
数据库共享性高吗
深圳私人承接软件开发定制
国家级网络安全工程师证书
怎么做网络安全等保
网络安全主题班会收获
精选服务器机箱推荐
河南数据网络技术市场价
河北继续教育网络安全试卷
什么是软件开发的敏捷方法
怀旧服五区新开服务器
求分享三级网络技术资源链接
西北工业大学网络安全复试
哪些大型软件开发失败
12点服务器会炸吗
网络安全防范小知识ppt
软件开发人员审价标准
网络安全教育心得300
mbti软件开发
上海点正互联网科技王垚