typescript中范型的示例分析
发表于:2025-01-21 作者:千家信息网编辑
千家信息网最后更新 2025年01月21日,这篇文章给大家分享的是有关typescript中范型的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。范型在定义泛型后,有两种方式使用,一种是传入泛型类型,另一种使用
千家信息网最后更新 2025年01月21日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安全错误
数据库的锁怎样保障安全
京东服务器时间毫秒
山东应用软件开发要多少钱
无锡博世集团软件开发
网络与信息安全软件开发是做什么
打印机数据库异常无法打印
用户注册数据库表建立
石家庄数据库碎片怎么清理
乾盟网络技术有限公司怎么样
软件开发流程3个
滨州专业软件开发价格
南乐租房软件开发
宁波数字化智慧工地软件开发
tbc 怀旧服服务器选择
大唐移动应用软件开发面试
打开wdcp服务器管理系统
华为软件开发工资怎样
转行面试软件开发工学
盐城物联网大数据平台软件开发
CRUISE软件开发
猪猪视频为什么连接不上服务器
虚拟机中查看当前服务器的主机名
亦庄软件开发公司
IT求职网络安全员
软件开发怎么营业
国家网络安全战略由什么部门实施
网络技术的核心是 的结合
服务器的安全都需要什么
有网但无法连接服务器
医院网络安全应急预案制定
协调服务器下载